面向分组的无损压缩库

por*_*uod 19 c c++ compression

有谁知道在C/C++中支持面向数据包压缩的免费(非GPL),性能良好的压缩库?

对于面向数据包,我的意思是QuickLZ(GPL)具有的功能,其中流的多个数据包可以单独压缩和解压缩,同时跨数据包维护历史记录以实现合理的压缩.

只要CPU使用率不是很荒谬,我就赞成压缩比而不是CPU使用率,但我很难找到这个功能,所以任何事情都有意义.

pmd*_*mdj 9

zlib的main deflate()函数采用一个flush参数,允许各种不同的刷新模式.如果您在每个数据包的末尾传递Z_SYNC_FLUSH,那么应产生所需的效果.

有关详细信息,请参阅zLib手册.

bzip2也具有刷新功能,这可能会让你做这种事情.见http://www.bzip.org/1.0.5/bzip2-manual-1.0.5.html#bzCompress


Set*_*eth 5

谷歌的Snappy可能是一个不错的选择,如果你需要速度而不是压缩,并且只是想节省适量的空间.

另外,Ilia Muraviev不久前在公共领域中放了一小段压缩代码BALZ.它适用于多种数据.

这两个都支持流刷新和独立状态变量来跨数据包执行多个并发流.