Skip to content

Commit 95c8546

Browse files
Merge pull request #12 from artificialio/cd/2025-09-11-less-aggressive-colors
Less aggressive colors
2 parents 0f1e84c + 2e18074 commit 95c8546

File tree

1 file changed

+22
-7
lines changed

1 file changed

+22
-7
lines changed

src/Perf/Web/Routes.hs

Lines changed: 22 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -198,6 +198,11 @@ getCompareCommitsR before after = do
198198
benchmarks <- db $ materializeCommits $ hash0 NonEmpty.:| [hash1]
199199
lucid do
200200
defaultLayout_ "Compare commits" do
201+
div_ do
202+
p_ do
203+
div_ $ colorize "grey" "grey: no significant change wrt stddev"
204+
div_ $ colorize "red" "red: change exceeding max stddev"
205+
div_ $ colorize "purple" "purple: some change, not seemingly significant"
201206
generateTable generatePluralMetric benchmarks
202207

203208
generateTable ::
@@ -244,14 +249,14 @@ generatePluralMetric metrics0 = do
244249
td_ do
245250
div_ do
246251
table_ $ do
247-
property Bold "mean" (.metricMean)
248-
property Small "σ" (.metricStddev)
249-
property Small "min" (.metricRangeLower)
250-
property Small "max" (.metricRangeUpper)
252+
let stddev = foldl1 max $ map (.metricStddev) $ metrics
253+
property (Just stddev) Bold "mean" (.metricMean)
254+
property Nothing Small "σ" (.metricStddev)
255+
property Nothing Small "min" (.metricRangeLower)
256+
property Nothing Small "max" (.metricRangeUpper)
251257
where
252258
metrics = List.sortBy (RIO.comparing $ RIO.Down . (.metricTestId)) $ Map.elems metrics0
253-
colorize color s = span_ [style_ ("color: " <> color)] s
254-
property style label accessor = do
259+
property mstddev style label accessor = do
255260
let textWrapper = case style of
256261
Bold -> strong_
257262
Small -> small_
@@ -265,12 +270,22 @@ generatePluralMetric metrics0 = do
265270
map (shortNum . accessor) $
266271
metrics
267272
"="
268-
colorize "red" $ shortNum $ diff
273+
case mstddev of
274+
Just stddev
275+
| abs diff < stddev ->
276+
colorize "grey" $ shortNum $ diff
277+
| otherwise ->
278+
colorize "red" $ shortNum $ diff
279+
Nothing ->
280+
colorize "purple" $ shortNum $ diff
269281
else
270282
sequence_ $
271283
map (shortNum . accessor) $
272284
take 1 metrics
273285

286+
colorize :: Monad m => Text -> HtmlT m () -> HtmlT m ()
287+
colorize color s = span_ [style_ ("color: " <> color)] s
288+
274289
shortNum :: Double -> Html ()
275290
shortNum =
276291
span_ [style_ "font-family: monospace"] .

0 commit comments

Comments
 (0)