Pass benchmark results out via pointer
This commit is contained in:
parent
37e7c6481a
commit
3fa089e4af
17
main.c
17
main.c
@ -30,7 +30,7 @@
|
||||
struct bench_res {
|
||||
double succ_rate;
|
||||
double avg_time_us;
|
||||
unsigned avg_passes;
|
||||
double avg_passes;
|
||||
};
|
||||
|
||||
static uint32_t getseed(void)
|
||||
@ -75,7 +75,7 @@ static void genpuzzles(struct sudoku puzzles_out[NPUZZLES],
|
||||
}
|
||||
}
|
||||
|
||||
static struct bench_res runbench(struct sudoku puzzles[NPUZZLES])
|
||||
static void runbench(struct sudoku puzzles[NPUZZLES], struct bench_res *res_out)
|
||||
{
|
||||
int res[NPUZZLES];
|
||||
unsigned i;
|
||||
@ -106,11 +106,9 @@ static struct bench_res runbench(struct sudoku puzzles[NPUZZLES])
|
||||
tot_passes += (unsigned long)res[i];
|
||||
}
|
||||
|
||||
return (struct bench_res) {
|
||||
.succ_rate = (double)solved / NPUZZLES,
|
||||
.avg_time_us = tot_micros / NPUZZLES,
|
||||
.avg_passes = tot_passes / NPUZZLES,
|
||||
};
|
||||
res_out->succ_rate = (double)solved / NPUZZLES;
|
||||
res_out->avg_time_us = tot_micros / NPUZZLES;
|
||||
res_out->avg_passes = (double)tot_passes / NPUZZLES;
|
||||
}
|
||||
|
||||
int main(void)
|
||||
@ -120,13 +118,14 @@ int main(void)
|
||||
srand(seed);
|
||||
|
||||
struct sudoku puzzles[NPUZZLES];
|
||||
struct bench_res res;
|
||||
genpuzzles(puzzles, 0.33, true);
|
||||
struct bench_res res = runbench(puzzles);
|
||||
runbench(puzzles, &res);
|
||||
|
||||
puts("\n SUMMARY\n =======");
|
||||
printf("Success rate: %.0lf%%\n", 1e2 * res.succ_rate);
|
||||
printf("Average time: %.3lf µs\n", res.avg_time_us);
|
||||
printf("Average n.o. passes: %u\n", res.avg_passes);
|
||||
printf("Average n.o. passes: %0.3lf\n", res.avg_passes);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user