Restructure of repetition tester
This commit is contained in:
parent
b7d33de2d7
commit
dca94a0edf
@ -15,6 +15,13 @@ struct reptest_results {
|
||||
u64 read_time;
|
||||
};
|
||||
|
||||
struct time_stats {
|
||||
u64 min_time;
|
||||
u64 max_time;
|
||||
u64 avg_time;
|
||||
u64 total_time;
|
||||
};
|
||||
|
||||
struct reptester {
|
||||
reptest_params params;
|
||||
|
||||
@ -25,10 +32,7 @@ struct reptester {
|
||||
u64 test_start_time;
|
||||
|
||||
u64 current_run;
|
||||
u64 min;
|
||||
u64 max;
|
||||
u64 avg;
|
||||
u64 total;
|
||||
time_stats tstats;
|
||||
|
||||
reptest_results results;
|
||||
};
|
||||
|
@ -40,10 +40,12 @@ int main(int argc, char *argv[]) {
|
||||
read_cpu_timer(), // test_start_time
|
||||
|
||||
1, // current_run
|
||||
UINT64_MAX, // min
|
||||
0, // max
|
||||
0, // avg
|
||||
0, // total
|
||||
{
|
||||
UINT64_MAX, // min
|
||||
0, // max
|
||||
0, // avg
|
||||
0, // total
|
||||
},
|
||||
{}, // results
|
||||
};
|
||||
// clang-format on
|
||||
|
@ -37,10 +37,12 @@ void run_func_test(reptester *tester, reptest_func func, const char *func_name,
|
||||
tester->test_start_time = read_cpu_timer();
|
||||
tester->test_time_secs = 0.0;
|
||||
tester->current_run = 1;
|
||||
tester->min = UINT64_MAX;
|
||||
tester->max = 0;
|
||||
tester->avg = 0;
|
||||
tester->total = 0;
|
||||
tester->tstats = {
|
||||
UINT64_MAX, // min_time
|
||||
0, // max_time
|
||||
0, // avg_time
|
||||
0, // total_time
|
||||
};
|
||||
tester->results = {};
|
||||
|
||||
char *buffer = NULL;
|
||||
@ -63,13 +65,13 @@ void run_func_test(reptester *tester, reptest_func func, const char *func_name,
|
||||
return;
|
||||
}
|
||||
|
||||
tester->total += tester->results.read_time;
|
||||
tester->tstats.total_time += tester->results.read_time;
|
||||
|
||||
if (tester->results.read_time > tester->max) {
|
||||
tester->max = tester->results.read_time;
|
||||
} else if (tester->results.read_time < tester->min) {
|
||||
if (tester->results.read_time > tester->tstats.max_time) {
|
||||
tester->tstats.max_time = tester->results.read_time;
|
||||
} else if (tester->results.read_time < tester->tstats.min_time) {
|
||||
tester->test_start_time = read_cpu_timer();
|
||||
tester->min = tester->results.read_time;
|
||||
tester->tstats.min_time = tester->results.read_time;
|
||||
}
|
||||
|
||||
tester->test_time_secs = time_in_seconds(
|
||||
@ -94,13 +96,16 @@ void print_results(reptester *tester, const char *name) {
|
||||
|
||||
u64 run_count = tester->current_run - 1;
|
||||
|
||||
tester->avg = tester->total / run_count;
|
||||
tester->tstats.avg_time = tester->tstats.total_time / run_count;
|
||||
|
||||
printf("\n%s: %lu runs\n", name, run_count);
|
||||
printf("MIN: %lu (%fGB/s)\n", tester->min,
|
||||
size_in_gb / time_in_seconds(tester->min, tester->cpu_freq));
|
||||
printf("MAX: %lu (%fGB/s)\n", tester->max,
|
||||
size_in_gb / time_in_seconds(tester->max, tester->cpu_freq));
|
||||
printf("AVG: %lu (%fGB/s)\n", tester->avg,
|
||||
size_in_gb / time_in_seconds(tester->avg, tester->cpu_freq));
|
||||
printf("MIN: %lu (%fGB/s)\n", tester->tstats.min_time,
|
||||
size_in_gb /
|
||||
time_in_seconds(tester->tstats.min_time, tester->cpu_freq));
|
||||
printf("MAX: %lu (%fGB/s)\n", tester->tstats.max_time,
|
||||
size_in_gb /
|
||||
time_in_seconds(tester->tstats.max_time, tester->cpu_freq));
|
||||
printf("AVG: %lu (%fGB/s)\n", tester->tstats.avg_time,
|
||||
size_in_gb /
|
||||
time_in_seconds(tester->tstats.avg_time, tester->cpu_freq));
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user