hindent-4.6.2: src/main/Benchmark.hs
{-# LANGUAGE BangPatterns #-}
-- | Benchmark the pretty printer.
module Main where
import Control.DeepSeq
import Criterion
import Criterion.Main
import Data.Text.Lazy (Text)
import qualified Data.Text.Lazy.IO as LT
import qualified Data.Text.Lazy.Builder as T
import HIndent
-- | Main benchmarks.
main :: IO ()
main =
defaultMain
[env setupEnv
(\ ~bigDecls ->
bgroup "Main"
[bgroup "BigDeclarations"
[bench ("HIndent.reformat: " ++
show (styleName style))
(nf (either error T.toLazyText .
reformat style (Just defaultExtensions))
bigDecls)|style <- styles]])]
-- | Setup the environment for the benchmarks.
setupEnv :: IO Text
setupEnv = do
bigDecls <- LT.readFile "benchmarks/BigDeclarations.hs"
let !decls = force bigDecls
return decls