tidal-1.10.0: bench/Speed/Tidal/PatternB.hs
module Tidal.PatternB where
import Criterion.Main (Benchmark, bench, bgroup, nf, whnf)
import Sound.Tidal.Pattern
( ArcF (Arc),
Time,
hull,
sect,
subArc,
withQueryArc,
withQueryTime,
withResultArc,
)
import Tidal.Inputs (arcFunc, wqaBig, wqaMed)
arc1 :: ArcF Time
arc1 = Arc 3 5
arc2 :: ArcF Time
arc2 = Arc 4 6
arc3 :: ArcF Time
arc3 = Arc 0 1
arc4 :: ArcF Time
arc4 = Arc 1 2
withQueryTimeB :: [Benchmark]
withQueryTimeB =
[ bgroup
"withQueryTime"
[ bench "wqt whnf" $ whnf withQueryTime (* 2),
bench "wqt2 whnf" $ whnf withQueryTime (+ 1),
bench "wqt nf" $ nf withQueryTime (* 2)
]
]
withResultArcB :: [Benchmark]
withResultArcB =
[ bgroup
"withResultArc"
[ bench "wqa med" $ whnf (withResultArc arcFunc) wqaMed,
bench "wqa big" $ whnf (withResultArc arcFunc) wqaBig
]
]
withQueryArcB :: [Benchmark]
withQueryArcB =
[ bgroup
"withQueryArc"
[ bench "wqa med" $ whnf (withQueryArc arcFunc) wqaMed,
bench "wqa big" $ whnf (withQueryArc arcFunc) wqaBig
]
]
subArcB :: [Benchmark]
subArcB =
[ bgroup
"subArc"
[ bench "intersecting" $ whnf (subArc arc1) arc2,
bench "non-intersecting" $ whnf (subArc arc3) arc4
]
]
sectB :: Benchmark
sectB = bench "sect" $ whnf (sect arc1) arc2
hullB :: Benchmark
hullB = bench "hull" $ whnf (hull arc1) arc2