packages feed

tidal-1.10.0: bench/Speed/Tidal/CoreB.hs

module Tidal.CoreB where

import Criterion.Main (Benchmark, bench, bgroup, nf, whnf)
import Sound.Tidal.Core
  ( append,
    cat,
    fastAppend,
    fastCat,
    fastFromList,
    fromList,
    overlay,
    stack,
    timeCat,
  )
import Sound.Tidal.Pattern (toTime, _fast)
import Tidal.Inputs
  ( catPattBig,
    catPattMed,
    catPattMedB,
    catPattSmall,
    pattApp1,
    pattApp2,
    timeCatBig,
    timeCatMed,
    xs3,
    xs4,
    xs5,
    xs6,
  )

_fastB :: [Benchmark]
_fastB =
  [ bgroup
      "_fast"
      [ bench "_fast < 0" $ whnf (_fast (-2)) pattApp2,
        bench "_fast > 0" $ whnf (_fast (toTime $ (10 :: Int) ^ (6 :: Int))) (cat catPattBig)
      ]
  ]

concatB :: [Benchmark]
concatB =
  [ bgroup
      "concat"
      [ bench "fastCat 10^3" $ whnf fastCat catPattSmall,
        bench "fastCat 10^4" $ whnf fastCat catPattMed,
        bench "fastCat 10^5" $ whnf fastCat catPattMedB,
        bench "fastCat 10^6" $ whnf fastCat catPattBig,
        bench "timeCat 10^5" $ whnf timeCat timeCatMed,
        bench "timeCat 10^6" $ whnf timeCat timeCatBig
      ]
  ]

fromListB :: [Benchmark]
fromListB =
  [ bgroup
      "fromList"
      [ bench "fromList" $ whnf fromList xs6,
        bench "fromList nf" $ nf fromList xs6,
        bench "fastFromList 10^3" $ whnf fastFromList xs3,
        bench "fastFromList 10^4" $ whnf fastFromList xs4,
        bench "fastFromList 10^5" $ whnf fastFromList xs5,
        bench "fastFromList 10^6" $ whnf fastFromList xs6,
        bench "fastFromList 10^6 nf" $ nf fastFromList xs6
      ]
  ]

appendB :: [Benchmark]
appendB =
  [ bgroup
      "append"
      [ bench "append" $ whnf (append pattApp1) pattApp2,
        bench "fastAppend" $ whnf (fastAppend pattApp1) pattApp2
      ]
  ]

stackB :: [Benchmark]
stackB =
  [ bgroup
      "stack"
      [ bench "overlay" $ whnf (overlay pattApp1) pattApp2,
        bench "stack" $ whnf stack catPattBig
      ]
  ]