{-# LANGUAGE BangPatterns #-} {-# LANGUAGE FlexibleInstances #-} {-# LANGUAGE MultiParamTypeClasses #-} {-# LANGUAGE OverloadedStrings #-} {-# LANGUAGE TemplateHaskell #-} {-# LANGUAGE TypeApplications #-} {-# LANGUAGE TypeSynonymInstances #-} import Criterion.Main import Data.FileEmbed import Data.Text (Text, append) import Text.Ogmarkup main = defaultMain [ bench "reference" $ nf (ogmarkup @ConfText) inputText , bgroup "complexity" [ bench "5" $ nf (ogmarkup @ConfText) inT5 , bench "10" $ nf (ogmarkup @ConfText) inT10 , bench "15" $ nf (ogmarkup @ConfText) inT15 , bench "20" $ nf (ogmarkup @ConfText) inT20 , bench "25" $ nf (ogmarkup @ConfText) inT25 , bench "30" $ nf (ogmarkup @ConfText) inT30 ] ] where app :: Monoid a => Int -> a -> a app 1 x = x app n x = x `mappend` app (n-1) x !inT5 = app 5 inputText !inT10 = app 10 inputText !inT15 = app 15 inputText !inT20 = app 20 inputText !inT25 = app 25 inputText !inT30 = app 30 inputText inputText :: Text inputText = $(embedFile "bench/test.up") data ConfText instance GenConf ConfText Text where printSpace _ = " "