module Main where
import Criterion.Main
import qualified Data.List.CommonSubstring as Suffix
import qualified Data.List.SlowSubstring as Slow
first padlen = padding ++ "bbbbbbbb" ++ padding
where padding = concat $ replicate padlen "abcd"
second padlen = padding ++ "bbbbbbb" ++ padding
where padding = concat (replicate padlen "efgh")
main = defaultMain [
bgroup "string-similarity"
[ bench "slow" $ whnf (Slow.longestSubstring $ first 100) (second 100),
bench "common" $ whnf (Suffix.longestSubstring $ first 100) (second 100),
bench "common" $ whnf (Suffix.longestSubstring $ first 1000) (second 1000),
bench "common" $ whnf (Suffix.longestSubstring $ first 10000) (second 10000)
]
]