Restructure of repetition tester
This commit is contained in:
		@@ -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));
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user