egison-5.0.0: benchmark/Benchmark.hs
module Main where
import Control.Monad.Trans.Class (lift)
import Criterion
import Criterion.Main
import Language.Egison
runEgisonFile :: FilePath -> IO Env
runEgisonFile path = do
res <- fromEvalM defaultOption $ do
env <- lift (lift initialEnv)
topExprs <- loadFile path
evalTopExprsNoPrint env topExprs
case res of
Left err -> do
print err
return nullEnv
Right env -> return env
main :: IO ()
main = defaultMainWith defaultConfig
[ bgroup "fact"
[ bench "30000" $ whnfIO $ runEgisonFile "benchmark/fact-30000.egi" ]
, bgroup "collection"
[ bench "cons-bench" $ whnfIO $ runEgisonFile "benchmark/collection-bench-cons.egi"
, bench "cons-bench-large" $ whnfIO $ runEgisonFile "benchmark/collection-bench-cons-large.egi"
, bench "*:-bench" $ whnfIO $ runEgisonFile "benchmark/collection-bench-*:.egi"
]
]