Skip to content

Commit 261e5eb

Browse files
committed
feat: also save the lower and upper fences in the json data
1 parent e3e5ee8 commit 261e5eb

File tree

1 file changed

+15
-3
lines changed

1 file changed

+15
-3
lines changed

src/pytest_codspeed/instruments/walltime.py

Lines changed: 15 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -51,11 +51,14 @@ def from_codspeed_config(cls, config: CodSpeedConfig) -> BenchmarkConfig:
5151
class BenchmarkStats:
5252
min_ns: float
5353
max_ns: float
54-
stdev_ns: float
5554
mean_ns: float
55+
stdev_ns: float
56+
57+
lower_fence_ns: float
5658
q1_ns: float
5759
median_ns: float
5860
q3_ns: float
61+
upper_fence_ns: float
5962

6063
rounds: int
6164
total_time: float
@@ -76,17 +79,26 @@ def from_list(
7679
stdev_ns = stdev(times_ns) if len(times_ns) > 1 else 0
7780
mean_ns = mean(times_ns)
7881
q1_ns, median_ns, q3_ns = quantiles(times_ns, n=4)
82+
iqr_ns = q3_ns - q1_ns
83+
lower_fence_ns = q1_ns - 1.5 * iqr_ns
84+
upper_fence_ns = q3_ns + 1.5 * iqr_ns
85+
outliers_rounds = sum(
86+
1 for t in times_ns if t < lower_fence_ns or t > upper_fence_ns
87+
)
88+
7989
return cls(
8090
min_ns=min(times_ns),
8191
max_ns=max(times_ns),
8292
stdev_ns=stdev_ns,
8393
mean_ns=mean_ns,
84-
median_ns=median_ns,
94+
lower_fence_ns=lower_fence_ns,
8595
q1_ns=q1_ns,
96+
median_ns=median_ns,
8697
q3_ns=q3_ns,
98+
upper_fence_ns=upper_fence_ns,
8799
rounds=rounds,
88100
total_time=total_time,
89-
outlier_rounds=sum(1 for t in times_ns if abs(t - mean_ns) > stdev_ns),
101+
outlier_rounds=outliers_rounds,
90102
iter_per_round=iter_per_round,
91103
warmup_iters=warmup_iters,
92104
)

0 commit comments

Comments
 (0)