相关疑难解决方法(0)

在Haskell中解析大型日志文件

假设我有几个200mb +文件,我想要通过.我怎么在Haskell做这个?

这是我的初始计划:

import Data.List
import Control.Monad
import System.IO
import System.Environment

main = do
  filename <- liftM head getArgs
  contents <- liftM lines $ readFile filename
  putStrLn . unlines . filter (isPrefixOf "import") $ contents
Run Code Online (Sandbox Code Playgroud)

这会在解析之前将整个文件读入内存.然后我去了:

import Data.List
import Control.Monad
import System.IO
import System.Environment

main = do
  filename <- liftM head getArgs
  file <- (openFile filename ReadMode)
  contents <- liftM lines $ hGetContents file
  putStrLn . unlines . filter (isPrefixOf "import") $ contents
Run Code Online (Sandbox Code Playgroud)

我以为既然hGetContents很懒,就会避免将整个文件读入内存.但是,运行这两个脚本valgrind显示两者的内存使用量相似.所以要么我的脚本错了,要么 …

haskell

10
推荐指数
2
解决办法
1399
查看次数

标签 统计

haskell ×1