packages feed

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

{-# LANGUAGE OverloadedStrings #-}

module Tidal.UIB where

import Criterion.Main (Benchmark, bench, bgroup, nf, whnf)
import Sound.Tidal.Context
  ( euclid,
    euclidFull,
    fast,
    fix,
    _euclidBool,
  )
import Tidal.Inputs (ecA1, ecA2, fixArg1, fixArg2)

fixB :: [Benchmark]
fixB =
  [ bgroup
      "fix"
      [ bench "fix whnf" $ whnf (fix (fast 2) fixArg1) fixArg2,
        bench "fix nf" $ nf (fix (fast 2) fixArg1) fixArg2
      ]
  ]

euclidB :: [Benchmark]
euclidB =
  [ bgroup
      "euclid"
      [ bench "euclid" $ whnf (euclid (head ecA1) (ecA1 !! 1)) ecA2,
        bench "euclidFull" $ whnf (euclidFull (head ecA1) (ecA1 !! 1) ecA2) ecA2,
        bench "euclidBool" $ whnf (_euclidBool 1) 100000
      ]
  ]