4

我有一个问题,我需要压缩大约 6 GB std::vector()(其中 15 亿floats),到目前为止我使用的是 lz4,但它只处理s 的int计数char。由于我的向量中有 60 亿个字符,因此需要 33 位来表示,并且 LZ4 的压缩无法按我的需要进行。

从我在 zlib 库中看到的内容来看,它需要 int 以及压缩数据长度的输入。

我是否需要对我的数据进行分段,或者是否有一个框架能够处理超过 32 位的chars,或者我错过了什么?

4

2 回答 2

2

使用 zlib,并将数组作为几个块传递。zlib 使用的 DEFLATE 算法的窗口大小约为 32 KB,并且它已经对压缩后的数据进行了缓冲,因此将数据作为多个 chunk 传入不会影响压缩效率。

于 2013-02-07T18:29:50.680 回答
0

看看XZ,它似乎可以处理非常大的尺寸。CLI 可执行文件本身是库的瘦包装器,因此这应该符合您的要求。

OTOH,二进制浮点流不应该压缩得那么好......

于 2013-02-08T01:57:35.873 回答