packages feed

ghc-mod-5.8.0.0: bench/Bench.hs

import Criterion.Main
import GhcMod.Target
import GhcMod.Monad
import GhcMod.Types
import Dir
import System.IO.Temp
import System.Process hiding (env)
import Control.Monad

main = defaultMain [
    env setup $ \dir -> bgroup "simple-cabal" [
        bench "nop" $ whnfIO (simpleCabalNop dir 1)
      , bench "nop10" $ whnfIO (simpleCabalNop dir 10)
      ]
  ]

setup = do
  tdir <- createTempDirectory "/tmp" "ghc-mod-bench"
  system $ "cp -rv \"bench/data/simple-cabal/\" \""++ tdir ++"\""

  simpleCabalNop tdir 1 -- warmup dist/

  return tdir

simpleCabalNop :: FilePath -> Int -> IO ()
simpleCabalNop dir n = withDirectory_ (dir </> "simple-cabal") $ do
  _ <- runGhcModT defaultOptions $
       forM_ [1..n] $ \_ -> do
           runGmlT [Left "Main.hs"] (return ())
  return ()