performance - 处理海量数据

标签 performance haskell

假设我有一个大文件(500GB+)并且有一条数据记录 声明 Sample 指示该文件中的一行:

data Sample = Sample {
field1 :: Int,
field2 :: Int
}

现在适合处理的数据结构是什么 (filter/map/fold) 收集这些Sample 数据?大学教师 斯图尔特has answered here不应处理 Sample 类型 作为列表 [Sample] 类型,但作为 Vector 类型。我的问题是如何 将其表示为 Vector 类型是否可以解决问题?没有 将文件内容表示为 Sample 类型的向量也将 占用约500Gb?

解决此类问题的推荐方法是什么?

最佳答案

据我所知,您想要使用的操作(filtermapfold)可以通过两个管道完成(参见 Data.Conduit.List )和管道(参见 Pipes.Prelude )。

这两个库都完全能够操作/折叠和过滤数据。根据您的情况,他们可能会解决您的实际问题。

但是,如果您需要多次研究值,最好将 block 加载到向量中,如 @Don说。

关于performance - 处理海量数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24327060/

相关文章:

Python字符串操作——性能问题

python - 如何优化这个python代码?我需要改进它的运行时间

haskell - 在 Haskell 中生成不等于指定整数的整数列表?

haskell -\in Haskell 标识符的含义

c - 使用 hsc2hs 在 C 和 Haskell 之间传递静态数组

haskell - 是否存在具有可约束类型的语言?

javascript - react setState 慢

java - 判断一手扑克牌是否顺子的函数?

Javascript - 将数组部分复制到另一个数组的最快方法

haskell - Haskell 中的递归函数与递归 lambda