我有一个问题,我需要压缩大约 6 GB std::vector()
(其中 15 亿float
s),到目前为止我使用的是 lz4,但它只处理s 的int
计数char
。由于我的向量中有 60 亿个字符,因此需要 33 位来表示,并且 LZ4 的压缩无法按我的需要进行。
从我在 zlib 库中看到的内容来看,它需要 int 以及压缩数据长度的输入。
我是否需要对我的数据进行分段,或者是否有一个框架能够处理超过 32 位的char
s,或者我错过了什么?
我有一个问题,我需要压缩大约 6 GB std::vector()
(其中 15 亿float
s),到目前为止我使用的是 lz4,但它只处理s 的int
计数char
。由于我的向量中有 60 亿个字符,因此需要 33 位来表示,并且 LZ4 的压缩无法按我的需要进行。
从我在 zlib 库中看到的内容来看,它需要 int 以及压缩数据长度的输入。
我是否需要对我的数据进行分段,或者是否有一个框架能够处理超过 32 位的char
s,或者我错过了什么?
使用 zlib,并将数组作为几个块传递。zlib 使用的 DEFLATE 算法的窗口大小约为 32 KB,并且它已经对压缩后的数据进行了缓冲,因此将数据作为多个 chunk 传入不会影响压缩效率。
看看XZ,它似乎可以处理非常大的尺寸。CLI 可执行文件本身是库的瘦包装器,因此这应该符合您的要求。
OTOH,二进制浮点流不应该压缩得那么好......