From dca94a0edf3947c4c4696d0365c244f3c20a9889 Mon Sep 17 00:00:00 2001 From: Abdelrahman Date: Sat, 23 Sep 2023 23:06:38 +0100 Subject: [PATCH] Restructure of repetition tester --- .../include/repetition_testing/reptester.h | 12 ++++-- haversine_02/src/repetition_testing/main.cpp | 10 +++-- .../src/repetition_testing/reptester.cpp | 37 +++++++++++-------- 3 files changed, 35 insertions(+), 24 deletions(-) diff --git a/haversine_02/include/repetition_testing/reptester.h b/haversine_02/include/repetition_testing/reptester.h index 801cbd3..60415e3 100644 --- a/haversine_02/include/repetition_testing/reptester.h +++ b/haversine_02/include/repetition_testing/reptester.h @@ -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; }; diff --git a/haversine_02/src/repetition_testing/main.cpp b/haversine_02/src/repetition_testing/main.cpp index 35b3ab1..48e1e22 100644 --- a/haversine_02/src/repetition_testing/main.cpp +++ b/haversine_02/src/repetition_testing/main.cpp @@ -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 diff --git a/haversine_02/src/repetition_testing/reptester.cpp b/haversine_02/src/repetition_testing/reptester.cpp index 56efb3f..3a9e646 100644 --- a/haversine_02/src/repetition_testing/reptester.cpp +++ b/haversine_02/src/repetition_testing/reptester.cpp @@ -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)); }