几个常用快速无损压缩算法性能比较

您所在的位置:网站首页 最好的压缩算法是什么 几个常用快速无损压缩算法性能比较

几个常用快速无损压缩算法性能比较

2024-07-15 21:09| 来源: 网络整理| 查看: 265

Snappy

Snappy是在谷歌内部生产环境中被许多项目使用的压缩库,包括BigTable,MapReduce和RPC等。谷歌表示算法库针对性能做了调整,而不是针对压缩比或与其他类似工具的兼容性。在Intel酷睿i7处理器上,其单核处理数据流的能力达到250M/s-500M/s。Snappy同时针对64位x86处理器进行了优化,在英特尔酷睿i7处理器单一核心实现了至少250MB/s的压缩性能和500MB/ s的解压缩性能。Snappy对于纯文本的压缩率为1.5-1.7,对于HTML是2-4,当然了对于JPEG、PNG和其他已经压缩过的数据压缩率为1.0。谷歌强劲吹捧Snappy的鲁棒性,称其是“即使面对损坏或恶意输入也不会崩溃的设计”,并且在谷歌的生产环境中经过了PB级数据压缩的考验而稳定的。 官方网站:snappy | A fast compressor/decompressor

Snappy是一个压缩/解压缩库。它不旨在最大程度地压缩,也不旨在与任何其他压缩库兼容。相反,它的目标是非常高的速度和合理的压缩。例如,与zlib最快的模式相比,Snappy对于大多数输入而言要快一个数量级,但是生成的压缩文件要大20%至100%。在64位模式的Core i7处理器的单核上,Snappy的压缩速度约为250 MB / sec或更高,而解压缩的速度约为500 MB / sec或更高。

Snappy在Google内部广泛使用,从BigTable和MapReduce到我们的内部RPC系统,一应俱全。(在某些演示文稿等中,Snappy以前被称为“ Zippy”。)

有关更多信息,请参见README。源代码分发中包含针对其他一些压缩库(zlib,LZO,LZF,FastLZ和QuickLZ)的基准。源代码还包含一个 正式的格式规范,以及一个框架格式的规范,该格式可用于Snappy数据的更高层次的框架和封装,例如,用于以流方式在HTTP上传输Snappy压缩的数据。请注意,Snappy发行版当前没有实现后者的代码,但是某些端口可以实现(请参见下文)。

Snappy用C ++编写,但包含C绑定,并且第三方维护与其他语言的多个绑定:

C#: Snappy for .NET (P/Invoke wrapper), Snappy.NET (P/Invoke wrapper), Snappy.Sharp (native reimplementation)C portC++ MSVC packaging (plus Windows binaries, NuGet packages and command-line tool)Common Lisp: Library bindings, native reimplementationErlang: esnappy, snappy-erlang-nifGoHaskellHaxe (C++/Neko)iOS packagingJava: JNI wrapper (including the framing format), native reimplementation, other native reimplementation (including the framing format)LuaNode.js (including the framing format)PerlPHPPython (including a command-line tool for the framing format)RRubyRustSmalltalk (including the framing format)

Snappy在以下软件中已使用或可以作为替代软件使用:

MongoDBCassandraCouchbaseHadoopLessFSLevelDB (which is in turn used by Google Chrome)LuceneVoltDB FastLZ

FastLZ是一个高效的轻量级压缩解压库,其官方测试数据如下表:

官方网站:http://www.quicklz.com/

LZO/miniLZO

LZO是一个开源的无损压缩C语言库,其优点是压缩和解压缩比较迅速占用内存小等特点(网络传输希望的是压缩和解压缩速度比较快,压缩率不用很高),其提供了比较全的LZO库和一个精简版的miniLZO库,网上测试数据如下: 测试的时候使用bmp和文本文件,在X86的Linux虚拟机(单核256M内存,Debian 6.0 OS)上测试。

测试文件

原始大小

压缩后大小

压缩率

压缩时间

解压时间

1.bmp     

5292054 

159395

3.01%

9.174ms

23.037ms

2.bmp     

6912056 

33806     

0.489%

8.33ms

36.17ms

3.bmp     

6220856 

5101891 

82%

25.78ms

28.43ms

lzo.tar

6645760 

2457890 

36.98%

34.68ms

38.62ms

kdoc.tar

16660480

6987402

41.93%

102.86ms

108.2ms

kinc.tar

18257920

5684927 

31.13%   

106.87ms

113.86ms

官方网站:http://www.oberhumer.com/opensource/lzo/

LZO Professional 是我们的商业LZO许可计划。如果需要更好的压缩,则应查看出色的zlib库。zlib较慢,并且需要更多内存。为了获得更好的压缩效果,请考虑使用随bzip2文件压缩程序一起分发的libbzip2。文件压缩器应用程序lzop 使用LZO-与gzip非常相似, 但速度更快。lzop:http://www.lzop.org/



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3