int main(int argc, char** argv) { // Parse cmd line args. int pointCount = 0; if(argc == 2) { pointCount = atoi(argv[1]); } else { printf("usage: quickhull <points>\n"); exit(1); } long* x1 = malloc(pointCount * sizeof(long)); long* y1 = malloc(pointCount * sizeof(long)); long* x2 = malloc(pointCount * sizeof(long)); long* y2 = malloc(pointCount * sizeof(long)); long* out = malloc(pointCount * sizeof(long)); for (int i = 0; i < pointCount; i++) { x1[i] = i; y1[i] = i; x2[i] = i; y2[i] = i; } // Timing setup struct timeval start, finish; struct rusage start_ru, finish_ru; gettimeofday( &start, NULL ); getrusage( RUSAGE_SELF, &start_ru ); // Do the deed. dotp(pointCount, x1, y1, x2, y2, out); // Print how long it took. gettimeofday( &finish, NULL ); getrusage( RUSAGE_SELF, &finish_ru ); // printf("depth = %d\n", depth); // printf("points on hull = %d\n", hull->length); sub_timeval( &finish, &start ); sub_timeval( &finish_ru.ru_utime, &start_ru.ru_utime ); sub_timeval( &finish_ru.ru_stime, &start_ru.ru_stime ); add_timeval( &finish_ru.ru_utime, &finish_ru.ru_stime ); printf("elapsedTimeMS = "); print_timeval( &finish ); putchar( '\n' ); printf("cpuTimeMS = "); print_timeval( &finish_ru.ru_utime); putchar( '\n' ); }
int main(int argc, char** argv) { // Parse cmd line args. int size = 0; if(argc == 2) { size = atoi(argv[1]); } else { printf("usage: filtermax <size>\n"); exit(1); } // Input vector. long* uvec = malloc(size * sizeof(long)); // for (int i = 0; i < size; i++) { uvec[i] = i; } // Output vector. long* out = malloc(size * sizeof(long)); // Timing setup struct timeval start, finish; struct rusage start_ru, finish_ru; gettimeofday( &start, NULL ); getrusage( RUSAGE_SELF, &start_ru ); // Do the deed. long out_len, out_max; filtermax(size, uvec, out, &out_len, &out_max); // Print how long it took. gettimeofday( &finish, NULL ); getrusage( RUSAGE_SELF, &finish_ru ); sub_timeval( &finish, &start ); sub_timeval( &finish_ru.ru_utime, &start_ru.ru_utime ); sub_timeval( &finish_ru.ru_stime, &start_ru.ru_stime ); add_timeval( &finish_ru.ru_utime, &finish_ru.ru_stime ); printf("elapsedTimeMS = "); print_timeval( &finish ); putchar( '\n' ); printf("cpuTimeMS = "); print_timeval( &finish_ru.ru_utime); putchar( '\n' ); }
static void ktrrusage(const struct rusage *rup) { printf("struct rusage { utime="); print_timeval(&rup->ru_utime, 1); printf(", stime="); print_timeval(&rup->ru_stime, 1); printf(", maxrss=%ld, ixrss=%ld, idrss=%ld, isrss=%ld," " minflt=%ld, majflt=%ld, nswap=%ld, inblock=%ld," " oublock=%ld, msgsnd=%ld, msgrcv=%ld, nsignals=%ld," " nvcsw=%ld, nivcsw=%ld }\n", rup->ru_maxrss, rup->ru_ixrss, rup->ru_idrss, rup->ru_isrss, rup->ru_minflt, rup->ru_majflt, rup->ru_nswap, rup->ru_inblock, rup->ru_oublock, rup->ru_msgsnd, rup->ru_msgrcv, rup->ru_nsignals, rup->ru_nvcsw, rup->ru_nivcsw); }
static void ktrtimeval(const struct timeval *tvp, int relative) { printf("struct timeval { "); print_timeval(tvp, relative); printf(" }\n"); }
int main(int argc, char** argv) { // Parse cmd line args. int pointCount = 0; char* outSVG = 0; if(argc == 2) { pointCount = atoi(argv[1]); outSVG = 0; } else if (argc == 3) { pointCount = atoi(argv[1]); outSVG = argv[2]; } else { printf("usage: quickhull <points> [out.svg]\n"); exit(1); } // Initialise the vector to hold the hull. Vector* hull = vector_new(pointCount); // Use random points for test data. Vector* points = vector_new(pointCount); double originX = 300; double originY = 300; long maxDist = 250; srandom(170); for (int i = 0; i < pointCount; i++) { double r = (random() % (maxDist * 2)) - maxDist; double a = M_PI * (random() % 360) / 360; vector_append ( points , originX + r * cos (a) , originY + r * sin (a)); } // Timing setup struct timeval start, finish; struct rusage start_ru, finish_ru; gettimeofday( &start, NULL ); getrusage( RUSAGE_SELF, &start_ru ); // Do the deed. int depth = quickHull (points, hull); // Print how long it took. gettimeofday( &finish, NULL ); getrusage( RUSAGE_SELF, &finish_ru ); // printf("depth = %d\n", depth); // printf("points on hull = %d\n", hull->length); sub_timeval( &finish, &start ); sub_timeval( &finish_ru.ru_utime, &start_ru.ru_utime ); sub_timeval( &finish_ru.ru_stime, &start_ru.ru_stime ); add_timeval( &finish_ru.ru_utime, &finish_ru.ru_stime ); printf("elapsedTimeMS = "); print_timeval( &finish ); putchar( '\n' ); printf("cpuTimeMS = "); print_timeval( &finish_ru.ru_utime); putchar( '\n' ); // Write output to file if requested. if(outSVG != 0) { FILE* file = fopen(outSVG, "w"); dumpSVG (file, points, hull); fclose (file); } }