module BuildBox.Benchmark.Pretty
( pprBenchResultAspectHeader
, pprBenchResultAspect)
where
import BuildBox.Benchmark.Base
import BuildBox.Benchmark.TimeAspect
import BuildBox.Pretty
pprBenchResultAspectHeader :: Doc
pprBenchResultAspectHeader
= vcat
[ text " aspect min ref% avg ref% max ref% spread% "
, text " --------- ---------- ---------- ---------- ------- " ]
pprBenchResultAspect
:: TimeAspect
-> Maybe BenchResult
-> BenchResult
-> Maybe Doc
pprBenchResultAspect aspect prior result
| Just (tmin, tavg, tmax) <- takeMinAvgMaxOfBenchResult aspect result
, spread <- tmax tmin
, spreadPercent <- (floor $ (spread / tavg) * 100) :: Integer
, Just result' <- prior
, Just (tmin', tavg', tmax') <- takeMinAvgMaxOfBenchResult aspect result'
= Just $ text " "
<> padL 10 (ppr aspect)
<+> (padR 12 $ pprFloatRef tmin tmin')
<+> (padR 12 $ pprFloatRef tavg tavg')
<+> (padR 12 $ pprFloatRef tmax tmax')
<+> (padR 8 $ ppr spreadPercent)
| Just (tmin, tavg, tmax) <- takeMinAvgMaxOfBenchResult aspect result
, spread <- tmax tmin
, spreadPercent <- (floor $ (spread / tavg) * 100) :: Integer
= Just $ text " "
<> padL 10 (ppr aspect)
<+> (padR 12 $ (pprFloatTime tmin <> text " "))
<+> (padR 12 $ (pprFloatTime tavg <> text " "))
<+> (padR 12 $ (pprFloatTime tmax <> text " "))
<+> (padR 8 $ ppr spreadPercent)
| otherwise
= Nothing