diff --git a/bench/Main.hs b/bench/Main.hs index a096c2b..d996b08 100644 --- a/bench/Main.hs +++ b/bench/Main.hs @@ -5,6 +5,11 @@ import qualified Data.Text as Text import Criterion.Main import Turtle +boundedNaive :: Int -> Int -> Pattern a -> Pattern [a] +boundedNaive m n p = do + x <- choice (map pure [m..n]) + count x p + main :: IO () main = defaultMain [ bgroup "Pattern" @@ -20,5 +25,16 @@ main = defaultMain , bench "Prefix" $ nf (match (prefix (many "cat"))) (cats <> furniture) ] + , 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) + ] ] ]