如何在Haskell中持久存储大数据以实现高效的反序列化

时间:2011-07-02 08:56:46

标签: haskell

我面临着将大型数据集编译为磁盘表示的一般问题,该表示可以有效地反序列化为本机内存中的Haskell数据结构。

更具体地说,我有大量的图形数据,其中包含与边和顶点相关的各种属性。在C / C ++中,我已经将数据编译成mmap()能够表示最高效率,目前导致大约200MiB的C结构(并且其文本表示大约为600 MiB)。

我可以在(GHC)Haskell做的下一个最好的事情是什么?

1 个答案:

答案 0 :(得分:6)

使用包binary。它提供了一个工具箱,可以有效地序列化和反序列化Haskell中的数据。 binary 可以为您自动派生所需的类型类的实例,但您也可以手动编写优化的实例。

引自原始描述页面:

  

二进制包

     

高效,纯二进制序列化   使用懒惰的ByteStrings。 Haskell的价值观   可以编码为二进制编码   格式,以二进制形式写入磁盘,或   通过网络发送。序列化   速度超过1 G / sec   观察,所以这个库应该是   适合高性能   场景。