@@ -13,14 +13,16 @@ def get_2d_list(csv_filename):
1313 with open (csv_filename ) as csv_file :
1414 csv_reader = csv .reader (csv_file )
1515 next (csv_reader )
16- return [[str (name ), float (mean ), float (stdev )] for name , mean , stdev in csv_reader ]
16+ return [[str (name ), float (mean ), float (stdev ), int ( count ) ] for name , mean , stdev , count in csv_reader ]
1717
1818table_baseline = get_2d_list (args .baseline )
1919table_current = get_2d_list (args .current )
2020
21- def student (meanX , stdevX , runsX , meanY , stdevY , runsY ):
22- s2 = ((runsX - 1 ) * stdevX ** 2 + (runsY - 1 ) * stdevY ** 2 ) / (runsX + runsY - 2 )
23- return (meanX - meanY ) / math .sqrt (s2 / runsX + s2 / runsY ) if s2 > 0.0 else 0.0
21+ def student (x , sx , m , y , sy , n ):
22+ s = 0.0 if m < 2 or n < 2 else math .sqrt (((m - 1 ) * sx ** 2 + (n - 1 ) * sy ** 2 ) / (m + n - 2 ))
23+ d = x - y
24+ t = 0.0 if s == 0.0 else math .sqrt ((n * m ) / (n + m )) * d / s
25+ return d , s , t
2426
2527def get_emoji (t ):
2628 quantile = 2.0 # 95% confidence interval
@@ -33,13 +35,13 @@ def get_emoji(t):
3335
3436table = []
3537for baseline , current in zip (table_baseline , table_current ):
36- baseline_name , baseline_mean , baseline_stdev = baseline
37- name , mean , stdev = current
38+ baseline_name , baseline_mean , baseline_stdev , count_baseline = baseline
39+ name , mean , stdev , count = current
3840 assert (baseline_name == name )
39- diff = baseline_mean - mean
40- t = student (baseline_mean , baseline_stdev , args .runs , mean , stdev , args .runs ) if args . runs > 2 else 0.0
41+ total_time = mean * ( count // args . runs )
42+ d , s , t = student (baseline_mean , baseline_stdev , args .runs , mean , stdev , args .runs )
4143 emoji = get_emoji (t )
42- table .append ([name , int (mean ), f'{ stdev :.2f} ' , int ( diff ) , f'{ t :.2f} ' , emoji ])
44+ table .append ([name , int (total_time ), int ( mean ), f'{ stdev :.2f} ' , f' { d :.2f } ' , f'{ t :.2f} ' , emoji ])
4345
44- header = ['name' , 'mean (\u03BC s)' , 'stdev \u03C3 ' , 'diff \u0394 ' , 't' , '' ]
46+ header = ['name' , 'total time ( \u03BC s)' , ' mean (\u03BC s)' , 'stdev \u03C3 ' , 'diff \u0394 ' , 't' , '' ]
4547print (tab .tabulate (table , header , tablefmt = "github" ))
0 commit comments