@@ -55,15 +55,14 @@ class BenchmarkStats:
55
55
mean_ns : float
56
56
stdev_ns : float
57
57
58
- lower_fence_ns : float
59
58
q1_ns : float
60
59
median_ns : float
61
60
q3_ns : float
62
- upper_fence_ns : float
63
61
64
62
rounds : int
65
63
total_time : float
66
- outlier_rounds : int
64
+ iqr_outlier_rounds : int
65
+ stdev_outlier_rounds : int
67
66
iter_per_round : int
68
67
warmup_iters : int
69
68
@@ -79,27 +78,36 @@ def from_list(
79
78
) -> BenchmarkStats :
80
79
stdev_ns = stdev (times_ns ) if len (times_ns ) > 1 else 0
81
80
mean_ns = mean (times_ns )
82
- q1_ns , median_ns , q3_ns = quantiles (times_ns , n = 4 )
81
+ if len (times_ns ) > 1 :
82
+ q1_ns , median_ns , q3_ns = quantiles (times_ns , n = 4 )
83
+ else :
84
+ q1_ns , median_ns , q3_ns = (
85
+ mean_ns ,
86
+ mean_ns ,
87
+ mean_ns ,
88
+ )
83
89
iqr_ns = q3_ns - q1_ns
84
- lower_fence_ns = q1_ns - 1.5 * iqr_ns
85
- upper_fence_ns = q3_ns + 1.5 * iqr_ns
86
- outliers_rounds = sum (
87
- 1 for t in times_ns if t < lower_fence_ns or t > upper_fence_ns
90
+ iqr_outlier_rounds = sum (
91
+ 1 for t in times_ns if t < q1_ns - 1.5 * iqr_ns or t > q3_ns + 1.5 * iqr_ns
92
+ )
93
+ stdev_outlier_rounds = sum (
94
+ 1
95
+ for t in times_ns
96
+ if t < mean_ns - 3 * stdev_ns or t > mean_ns + 3 * stdev_ns
88
97
)
89
98
90
99
return cls (
91
100
min_ns = min (times_ns ),
92
101
max_ns = max (times_ns ),
93
102
stdev_ns = stdev_ns ,
94
103
mean_ns = mean_ns ,
95
- lower_fence_ns = lower_fence_ns ,
96
104
q1_ns = q1_ns ,
97
105
median_ns = median_ns ,
98
106
q3_ns = q3_ns ,
99
- upper_fence_ns = upper_fence_ns ,
100
107
rounds = rounds ,
101
108
total_time = total_time ,
102
- outlier_rounds = outliers_rounds ,
109
+ iqr_outlier_rounds = iqr_outlier_rounds ,
110
+ stdev_outlier_rounds = stdev_outlier_rounds ,
103
111
iter_per_round = iter_per_round ,
104
112
warmup_iters = warmup_iters ,
105
113
)
0 commit comments