我面临着将大型数据集编译为磁盘表示的一般问题,该表示可以有效地反序列化为本机内存中的Haskell数据结构。
更具体地说,我有大量的图形数据,其中包含与边和顶点相关的各种属性。在C / C ++中,我已经将数据编译成mmap()
能够表示最高效率,目前导致大约200MiB的C结构(并且其文本表示大约为600 MiB)。
我可以在(GHC)Haskell做的下一个最好的事情是什么?
答案 0 :(得分:6)
使用包binary。它提供了一个工具箱,可以有效地序列化和反序列化Haskell中的数据。 binary 可以为您自动派生所需的类型类的实例,但您也可以手动编写优化的实例。
引自原始描述页面:
二进制包
高效,纯二进制序列化 使用懒惰的ByteStrings。 Haskell的价值观 可以编码为二进制编码 格式,以二进制形式写入磁盘,或 通过网络发送。序列化 速度超过1 G / sec 观察,所以这个库应该是 适合高性能 场景。