在Haskell中将10 GB向量保存到磁盘的最佳方法

时间:2014-04-23 14:23:37

标签: haskell

我有一个10GB Data.Vector.Unboxed向量,我想有效地保存到磁盘。什么是最好,最有效的方式?我打算从内存映射文件中读取它。

我看过this package这个套餐,但只适用于Storable,但我需要保持未装箱。

我正在考虑转换为列表,但我认为这不是很理想。

3 个答案:

答案 0 :(得分:5)

您可以在整个矢量的O(n)遍历的代价下转换矢量类型。您正在寻找的功能是convert。只要您不打算经常将此向量写入磁盘,这个成本就不应该超过所有,并且肯定比实际将向量写入磁盘更快。但是,如果您发现自己经常支付此费用,则应该重新考虑算法。

答案 1 :(得分:4)

我自己没有测试过,但您可以尝试使用vector-binary-instancesBinaryVector提供{{1}}个实例,然后使用binary,例如encodeFile

答案 2 :(得分:0)

内存映射向量底层的C数组怎么样? 当然,仅当Vector未拆箱时才有效: - )。

然后编写包括获取指向数组的指针,数组的总C大小,以及使用单个C调用写入C内存块。