刚刚尝试从 pythonto haskell 重写琐碎的文件解析器,但发现它非常慢(在同一台机器上慢了大约 15 倍)。使用 ghc -O2 编译的代码。
目标是计算正则表达式匹配的行数。示例文本文件很大(几个 GiB)。
这是代码:
import Text.Regex.Posix
import qualified Data.ByteString as BS
import qualified Data.ByteString.Char8 as BC
filename = "sample.dat"
mcount' :: String -> [BS.ByteString] -> Int
mcount' sample file = foldr (\e acc -> if e =~ sample then acc+1 else acc) 0 file
main = do
fcnt <- fmap BC.lines $ BS.readFile filename
print $ mcount' "myregex" fcnt
我怎样才能(显着)提高性能?