yarl-0.1.0.0: bench/Main.hs
module Main where
import Control.DeepSeq
import Criterion.Main
import qualified LinkedList.ScenarioDirect as LinkedList
import qualified LinkedList.ScenarioGetValueClass as LinkedList
import qualified LinkedList.ScenarioGetValueConcrete as LinkedList
import qualified LinkedList.Value as LinkedList
import qualified PlainRecord.ScenarioDirect as PlainRecord
import qualified PlainRecord.ScenarioGetValueClass as PlainRecord
import qualified PlainRecord.ScenarioGetValueConcrete as PlainRecord
import qualified PlainRecord.Type as PlainRecord
import qualified PlainRecord.Value as PlainRecord
main :: IO ()
main =
defaultMain
[ bench "PlainRecord.sumDirect" $ nf' PlainRecord.sumDirect PlainRecord.oneRecord,
bench "PlainRecord.sumGetValueConcrete" $ nf' PlainRecord.sumGetValueConcrete PlainRecord.oneRecord,
bench "PlainRecord.sumGetValueClass" $ nf' PlainRecord.sumGetValueClass PlainRecord.oneRecord,
bench "LinkedList.sumDirect" $ nf' LinkedList.sumDirect LinkedList.oneRecord,
bench "LinkedList.sumGetValueConcrete" $ nf' LinkedList.sumGetValueConcrete LinkedList.oneRecord,
bench "LinkedList.sumGetValueClass" $ nf' LinkedList.sumGetValueClass LinkedList.oneRecord
]
nf' :: (NFData b, Num b) => (a -> b) -> a -> Benchmarkable
nf' f = nf (sum . map f) . replicate 1000000