egison-3.0.6: benchmark/Benchmark.hs
{-# LANGUAGE FlexibleInstances #-}
module Main where
import Control.Applicative ((<$>), (<*>))
import Control.Monad.Error
import Control.Applicative
import Control.DeepSeq (NFData(rnf))
import Criterion.Main
import Criterion.Config
import Language.Egison
runEgisonFile :: String -> IO (Either EgisonError Env)
runEgisonFile path = loadPrimitives nullEnv >>= loadLibraries >>= flip loadEgisonFile path
config :: Config
config = defaultConfig { cfgSamples = ljust 3
, cfgPerformGC = ljust True }
main :: IO ()
main = defaultMainWith config (return ())
[ bgroup "fact" [ bench "30000" $ runEgisonFile "benchmark/fact-30000.egi" ]
, bgroup "collection"
[ bench "cons-bench" $ runEgisonFile "benchmark/collection-bench-cons.egi"
, bench "cons-bench-large" $ runEgisonFile "benchmark/collection-bench-cons-large.egi"
, bench "snoc-bench" $ runEgisonFile "benchmark/collection-bench-snoc.egi"
]
]