我有一个10GB Data.Vector.Unboxed向量,我想有效地保存到磁盘。什么是最好,最有效的方式?我打算从内存映射文件中读取它。
我看过this package这个套餐,但只适用于Storable,但我需要保持未装箱。
我正在考虑转换为列表,但我认为这不是很理想。
答案 0 :(得分:5)
您可以在整个矢量的O(n)
遍历的代价下转换矢量类型。您正在寻找的功能是convert
。只要您不打算经常将此向量写入磁盘,这个成本就不应该超过所有,并且肯定比实际将向量写入磁盘更快。但是,如果您发现自己经常支付此费用,则应该重新考虑算法。
答案 1 :(得分:4)
我自己没有测试过,但您可以尝试使用vector-binary-instances,Binary
为Vector
提供{{1}}个实例,然后使用binary,例如encodeFile
答案 2 :(得分:0)
内存映射向量底层的C数组怎么样? 当然,仅当Vector未拆箱时才有效: - )。
然后编写包括获取指向数组的指针,数组的总C大小,以及使用单个C调用写入C内存块。