ogmarkup-4.0: bench/Bench.hs
{-# 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 _ = " "