Skip to content

Commit 1aec4e9

Browse files
committed
Merge branch 'fixbench' into codex/hls-graph-runtime-engine
2 parents 04da422 + 2f8a559 commit 1aec4e9

1 file changed

Lines changed: 30 additions & 9 deletions

File tree

  • shake-bench/src/Development/Benchmark

shake-bench/src/Development/Benchmark/Rules.hs

Lines changed: 30 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -379,13 +379,17 @@ csvRules build = do
379379
results = map tail allResults
380380
writeFileChanged out $ unlines $ header : concat results
381381
priority 2 $ build -/- "*/*/*/*/resultDiff.csv" %> \out -> do
382-
let out2@[b, flav, example, ver, conf, exp_] = splitDirectories out
382+
let [b, flav, example, ver, conf, _exp] = splitDirectories out
383383
prev <- fmap T.unpack $ askOracle $ GetParent $ T.pack ver
384384
allResultsCur <- readFileLines $ joinPath [b ,flav, example, ver, conf] </> "results.csv"
385-
allResultsPrev <- readFileLines $ joinPath [b ,flav, example, prev, conf] </> "results.csv"
386-
let resultsPrev = tail allResultsPrev
387-
let resultsCur = tail allResultsCur
388-
let resultDiff = zipWith convertToDiffResults resultsCur resultsPrev
385+
resultDiff <-
386+
if prev == ver
387+
then pure []
388+
else do
389+
allResultsPrev <- readFileLines $ joinPath [b ,flav, example, prev, conf] </> "results.csv"
390+
let resultsPrev = tail allResultsPrev
391+
let resultsCur = tail allResultsCur
392+
pure $ zipWith convertToDiffResults resultsCur resultsPrev
389393
writeFileChanged out $ unlines $ head allResultsCur : resultDiff
390394
-- aggregate all configurations for an experiment
391395
priority 3 $ build -/- "*/*/*/results.csv" %> genConfig "results.csv"
@@ -413,15 +417,32 @@ convertToDiffResults line baseLine = intercalate "," diffResults
413417
showItemDiffResult :: (Item, Maybe Double) -> String
414418
showItemDiffResult (ItemString x, _) = x
415419
showItemDiffResult (_, Nothing) = "NA"
416-
showItemDiffResult (Mem x, Just y) = printf "%.2f" (y * 100 - 100) <> "%"
417-
showItemDiffResult (Time x, Just y) = printf "%.2f" (y * 100 - 100) <> "%"
420+
showItemDiffResult (Mem _, Just y) = showPercentageDiff y
421+
showItemDiffResult (Time _, Just y) = showPercentageDiff y
422+
423+
showPercentageDiff :: Double -> String
424+
showPercentageDiff ratio
425+
| not (isFinite percent) = "NA"
426+
| abs percent < 0.005 = ""
427+
| otherwise = printf "%.2f" percent <> "%"
428+
where
429+
percent = ratio * 100 - 100
430+
431+
isFinite :: Double -> Bool
432+
isFinite x = not (isNaN x || isInfinite x)
418433

419434
diffItem :: Item -> Item -> (Item, Maybe Double)
420-
diffItem (Mem x) (Mem y) = (Mem x, Just $ fromIntegral x / fromIntegral y)
421-
diffItem (Time x) (Time y) = (Time x, if y == 0 then Nothing else Just $ x / y)
435+
diffItem (Mem x) (Mem y) = (Mem x, ratioMaybe (fromIntegral x) (fromIntegral y))
436+
diffItem (Time x) (Time y) = (Time x, ratioMaybe x y)
422437
diffItem (ItemString x) (ItemString y) = (ItemString x, Nothing)
423438
diffItem _ _ = (ItemString "no match", Nothing)
424439

440+
ratioMaybe :: Double -> Double -> Maybe Double
441+
ratioMaybe x y
442+
| y == 0 = Nothing
443+
| not (isFinite x && isFinite y) = Nothing
444+
| otherwise = Just $ x / y
445+
425446
data Item = Mem Int | Time Double | ItemString String
426447
deriving (Show)
427448

0 commit comments

Comments
 (0)