什么是最简单但高效的压缩算法?
Deflate,LZMA等不是有效选项。我需要像RLE、LZX、Huffman等编译得非常小的东西。
注意:数据95%为ASCII文本
编辑:数据目前为20kb,但我预计会增长到1mb
编辑2:
其他有趣的选项
smaz https://github.com/antirez/smaz
FastLZ http://fastlz.org/
什么是最简单但高效的压缩算法?
Deflate,LZMA等不是有效选项。我需要像RLE、LZX、Huffman等编译得非常小的东西。
注意:数据95%为ASCII文本
编辑:数据目前为20kb,但我预计会增长到1mb
编辑2:
其他有趣的选项
smaz https://github.com/antirez/smaz
FastLZ http://fastlz.org/
听起来LZO就是为满足您的要求而设计的:
- 解压非常简单且非常快。
- 解压时不需要任何内存。
- 压缩速度相当快。
对于这种情况,采用基于BWT的方法可能会更好。
http://en.wikipedia.org/wiki/Burrows%E2%80%93Wheeler_transform
它比LZs压缩文本效果更好,而且很容易从头开始实现,并且有好的库。
http://libbsc.com
http://encode.ru/threads/104-libBWT?p=22903&viewfull=1#post22903
http://code.google.com/p/libdivsufsort/
或者,另一种选择是使用ppmd进行文本压缩,用于rar/winzip/7-zip等,但它更加复杂。
http://www.compression.ru/ds/ppmdj1.rar
http://www.compression.ru/ds/ppmsj.rar(更快/内存占用更小)
http://www.ctxmodel.net/files/PPMd/ppmd_Jr1_sh8.rar(备用端口)
大多数字典方案都可以胜任。任何一种LZ算法都可以。我们在嵌入式系统中使用LZ77变体来进行许多简单的压缩操作,它几乎没有内存开销,效果非常好。压缩和解压缩所用的系统是什么?这将决定您可以使用哪种压缩器。