packages feed

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
  ]