gpt4 book ai didi

haskell - 如何高效地将 HashMap 写入文件?

转载 作者:行者123 更新时间:2023-12-02 03:54:48 25 4
gpt4 key购买 nike

import qualified Data.HashMap.Strict as M
import qualified Data.Text as T
import qualified Data.Text.IO as T.IO
import Text.FShow.RealFloat (fshow)

main = do
dataA <- T.IO.readFile "pathA"
dataB <- T.IO.readFile "pathB"
...
let hashmap = -- process dataA and dataB
hashmapList = map (\(t1,t1Map) -> (t1, map (\(t2,float) -> (t2,fshow float)) (M.toList t1Map))) $ M.toList hashmap
hashmapString = show hashmapList
writeFile "path" hashmapString

我想将类型为 M.HashMap T.Text (M.HashMap T.Text Float) 的 hashmap(见上面的代码)写入文件。我将 hashmap 转换为 List,此外还使用 fshow 有效地显示 Floats。使用 show 然后我将列表转换为字符串并将其写入文件。

使用 -O2 编译并分析产量:

COST CENTRE          MODULE                %time %alloc

main.hashmapList.\.\ Main 46.0 50.0
main.hashmapString Main 32.5 41.1
main.writeFile Main 11.9 0.2
main.hashmapList.\ Main 3.4 2.7
...

所以特别是把Map转成List,把List转成String,需要花费大量的时间和空间。如何更高效地将hashmap写入文件?

最佳答案

不妨正确回答这个问题。如果你有一个打开的文件句柄和一个将单个条目写入该文件的 IO Action ,那么你可以使用 Data.Foldable 中的 mapM_ 并只在整个文件上运行该 Action 结构以将其运行到该文件中。如果您也需要 key ,traverseWithKey 之类的东西是您的 friend 。

关于haskell - 如何高效地将 HashMap 写入文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13129740/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com