void benchmark_stats (bench_stats * stats) { double sum, times [stats->run_count] ; unsigned k ; for (k = 0 ; k < stats->run_count ; k++) times [k] = benchmark_function (stats->testfunc, stats->loop_count) ; qsort (times, stats->run_count, sizeof (times [0]), double_cmp) ; sum = 0.0 ; stats->min_time = stats->max_time = times [0] ; for (k = 0 ; k < stats->run_count ; k++) { stats->min_time = stats->min_time < times [k] ? stats->min_time : times [k] ; stats->max_time = stats->max_time > times [k] ? stats->max_time : times [k] ; sum += times [k] ; } stats->mean_time = sum / stats->run_count ; if (stats->run_count & 1) stats->median_time = times [(stats->run_count + 1) / 2] ; else stats->median_time = 0.5 * (times [stats->run_count / 2] + times [(stats->run_count / 2) + 1]) ; return ; } /* benchmark_stats */
int main(int argc, char *argv[]) { benchmark_function(); benchmark_function(); benchmark_function(); printf("Largest prime factor of 600851475143: %d\n", largest_prime_factor(600851475143)); }