anagrep-0.1.0.0: test/Bench.hs
import qualified Criterion.Main as C
import qualified Data.ByteString.Char8 as BSC
import Text.Regex.Anagram
dicts :: [String]
dicts =
[ "lt[aoeui]*"
, "[lt]*[aoeui]{5,10}"
, "[a-e][f-j][k-o][p-t][u-z]*"
, "[abc][def][ghi][jkl][mno][pqr][stu][vwx][yz]"
, "[a-e]?[f-j]?[k-o]?[p-t]?[u-z]*"
, "[a-z]?[a-m]?[n-z]?[a-e]?[f-j]?[k-o]?[p-t]?[u-z]?"
, "[a-m]{2,4}[a-g]{2,4}[a-d]{2,4}"
, "[a-g][a-fz][a-ey-z][a-dx-z][a-cw-z][a-bv-z][au-z]"
, "[a-g]?[a-fz]?[a-ey-z]?[a-dx-z]?[a-cw-z]?[a-bv-z]?[au-z]?"
]
main :: IO ()
main = C.defaultMain
[ C.bgroup "parse" $ map (\d ->
C.bench d $ C.nf makeAnagrex d)
dicts
, C.env (map BSC.unpack . BSC.lines <$> BSC.readFile "/usr/share/dict/words") $ \dict ->
C.bgroup "dict" $ map (\d ->
C.bench d $ C.nf (\(Right p) -> length $ filter (testAnagrex p) dict) (makeAnagrex d))
dicts
]