Skip to content

Commit 9a2186e

Browse files
committed
feat: send more outlier data
1 parent de252c7 commit 9a2186e

File tree

1 file changed

+19
-11
lines changed

1 file changed

+19
-11
lines changed

src/pytest_codspeed/instruments/walltime.py

Lines changed: 19 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -55,15 +55,14 @@ class BenchmarkStats:
5555
mean_ns: float
5656
stdev_ns: float
5757

58-
lower_fence_ns: float
5958
q1_ns: float
6059
median_ns: float
6160
q3_ns: float
62-
upper_fence_ns: float
6361

6462
rounds: int
6563
total_time: float
66-
outlier_rounds: int
64+
iqr_outlier_rounds: int
65+
stdev_outlier_rounds: int
6766
iter_per_round: int
6867
warmup_iters: int
6968

@@ -79,27 +78,36 @@ def from_list(
7978
) -> BenchmarkStats:
8079
stdev_ns = stdev(times_ns) if len(times_ns) > 1 else 0
8180
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+
)
8389
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
8897
)
8998

9099
return cls(
91100
min_ns=min(times_ns),
92101
max_ns=max(times_ns),
93102
stdev_ns=stdev_ns,
94103
mean_ns=mean_ns,
95-
lower_fence_ns=lower_fence_ns,
96104
q1_ns=q1_ns,
97105
median_ns=median_ns,
98106
q3_ns=q3_ns,
99-
upper_fence_ns=upper_fence_ns,
100107
rounds=rounds,
101108
total_time=total_time,
102-
outlier_rounds=outliers_rounds,
109+
iqr_outlier_rounds=iqr_outlier_rounds,
110+
stdev_outlier_rounds=stdev_outlier_rounds,
103111
iter_per_round=iter_per_round,
104112
warmup_iters=warmup_iters,
105113
)

0 commit comments

Comments
 (0)