@@ -11,33 +11,29 @@ def get_2d_list(csv_filename):
1111 with open (csv_filename ) as csv_file :
1212 csv_reader = csv .reader (csv_file )
1313 next (csv_reader )
14- return [row for row in csv_reader ]
14+ return [[ str ( name ), float ( mean ), float ( stdev )] for name , mean , stdev in csv_reader ]
1515
1616table_baseline = get_2d_list (args .baseline )
1717table_current = get_2d_list (args .current )
1818
19- pretty = lambda x : f'{ x :.1f} '
20-
21- def get_emoji (difference , stdev ):
19+ def get_emoji (d , stdev ):
2220 z = 1.96 # 95% confidence interval
23- if difference < z * stdev :
21+ if d < - z * stdev :
2422 return ':green_circle:'
25- elif difference > z * stdev :
23+ elif d > z * stdev :
2624 return ':red_circle:'
2725 else :
2826 return ':white_circle:'
2927
3028table = []
31- for current , baseline in zip (table_current , table_baseline ):
32- assert (current [0 ] == baseline [0 ])
33- name = current [0 ]
34- time = int (float (current [1 ]))
35- stdev = pretty (float (current [2 ]))
36- d = float (baseline [1 ]) - float (current [1 ])
37- difference = int (d )
38- percent = pretty (0 if float (baseline [1 ]) == 0.0 else 100 * d / float (baseline [1 ]))
39- emoji = get_emoji (d , float (current [2 ]))
40- table .append ([name , time , stdev , difference , percent , emoji ])
29+ for baseline , current in zip (table_baseline , table_current ):
30+ baseline_name , baseline_mean , _ = baseline
31+ name , mean , stdev = current
32+ assert (baseline_name == name )
33+ diff = baseline_mean - mean
34+ impact = 0.0 if stdev == 0.0 else diff / stdev
35+ emoji = get_emoji (diff , stdev )
36+ table .append ([name , int (mean ), f'{ stdev :.2f} ' , int (diff ), f'{ impact :.2f} ' , emoji ])
4137
42- header = [" name" , "time" , " stdev" , "difference" , "percent" , "" ]
38+ header = [' name' , 'mean (ms)' , ' stdev \u03C3 ' , 'diff \u0394 ' , ' \u0394 / \u03C3 ' , '' ]
4339print (tab .tabulate (table , header , tablefmt = "github" ))
0 commit comments