haskell-turtle-library/bench/Main.hs

41 lines
1.3 KiB
Haskell
Raw Normal View History

2015-05-12 19:44:27 +00:00
{-# LANGUAGE OverloadedStrings #-}
module Main where
import qualified Data.Text as Text
import Criterion.Main
import Turtle
2015-05-12 20:46:02 +00:00
boundedNaive :: Int -> Int -> Pattern a -> Pattern [a]
boundedNaive m n p = do
x <- choice (map pure [m..n])
count x p
2015-05-12 19:44:27 +00:00
main :: IO ()
main = defaultMain
[ bgroup "Pattern"
[ let cats = Text.replicate 1000 "cat"
furniture = Text.replicate 5 " "
in bgroup "Cat Lady's House"
[ bench "Basic"
$ nf (match (many "cat")) cats
, bench "Letters"
$ nf (match (many (mconcat ["c", "a", "t"]))) cats
, bench "Spaces"
$ nf (match (many "cat" <* spaces)) (cats <> furniture)
, bench "Prefix"
$ nf (match (prefix (many "cat"))) (cats <> furniture)
]
2015-05-12 20:46:02 +00:00
, let hearts n = Text.replicate n "heart"
in bgroup "Love Knows No Bounds"
[ bench "500-700:650 Naive"
$ nf (match (boundedNaive 500 700 "heart")) (hearts 650)
, bench "500-700:650"
$ nf (match (bounded 500 700 "heart")) (hearts 650)
, bench "5000-7000:6500 Naive"
$ nf (match (boundedNaive 5000 7000 "heart")) (hearts 6500)
, bench "5000-7000:6500"
$ nf (match (bounded 5000 7000 "heart")) (hearts 6500)
]
2015-05-12 19:44:27 +00:00
]
]