packages feed

rattle-0.2: benchmark/Benchmark.hs

{-# LANGUAGE RecordWildCards #-}

module Benchmark(main) where

import Benchmark.Args
import qualified Benchmark.FSATrace
import qualified Benchmark.Redis
import qualified Benchmark.Micro
import qualified Benchmark.Intro
import Control.Monad


benchmarks =
    ["fsatrace" * Benchmark.FSATrace.main
    ,"redis" * Benchmark.Redis.main
    ,"micro" * Benchmark.Micro.main
    ,"intro" * Benchmark.Intro.main
    ]
    where (*) = (,)


main :: IO ()
main = do
    args@Args{..} <- getArguments
    when (null names) $
        error $ "Specify which benchmarks to run, from: " ++ show (map fst benchmarks)
    forM_ names $ \name -> do
        let Just m = lookup name benchmarks
        m args