相关疑难解决方法(0)

当我从文件中读取地图时,Haskell需要比Python更多的内存.为什么?

我在Python中有这个简单的代码:

input = open("baseforms.txt","r",encoding='utf8')
S = {}
for i in input:
    words = i.split()
    S.update( {j:words[0] for j in words} )
print(S.get("sometext","not found"))
print(len(S))
Run Code Online (Sandbox Code Playgroud)

它需要300MB的工作量."baseforms.txt"大小为123M.我在Haskell中编写了相同的代码:

{-# LANGUAGE OverloadedStrings #-}
import qualified Data.Map as M
import qualified Data.ByteString.Lazy.Char8 as B
import Data.Text.Lazy.Encoding(decodeUtf8)
import qualified Data.Text.Lazy as T
import qualified Data.Text.Lazy.IO as I
import Control.Monad(liftM)

main = do
    text <- B.readFile "baseforms.txt"
    let m = (M.fromList . (concatMap (parseLine.decodeUtf8))) (B.lines text)
    print (M.lookup "sometext" m)
    print (M.size m)
    where
        parseLine line = …
Run Code Online (Sandbox Code Playgroud)

haskell

7
推荐指数
2
解决办法
293
查看次数

标签 统计

haskell ×1