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 port
  • C++ MSVC packaging (plus Windows binaries, NuGet packages and command-line tool)
  • Common Lisp: Library bindings, native reimplementation
  • Erlang: esnappy, snappy-erlang-nif
  • Go
  • Haskell
  • Haxe (C++/Neko)
  • iOS packaging
  • Java: JNI wrapper (including the framing format), native reimplementation, other native reimplementation (including the framing format)
  • Lua
  • Node.js (including the framing format)
  • Perl
  • PHP
  • Python (including a command-line tool for the framing format)
  • R
  • Ruby
  • Rust
  • Smalltalk (including the framing format)

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

  • MongoDB
  • Cassandra
  • Couchbase
  • Hadoop
  • LessFS
  • LevelDB (which is in turn used by Google Chrome)
  • Lucene
  • VoltDB

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/

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

  1. 视频压缩算法有哪些php,常用的无损压缩算法有哪些

    常用的无损压缩算法有:1.LZ77算法,该算法是很多其他无损压缩算法的基础:2.LZR算法,是旨在提升LZ77的一个算法:3.LZSS算法,该算法目标是成为LZ77的一个线性时间替换算法:4.DEFL ...

  2. 常用无损压缩算法原理简析

    无损压缩算法原理 压缩一般分为两个步骤,建模和编码.一个完美的模型可以描述数据流是如何产生的,相当于一个python类里面的generator.只需要这个generator就可以产生所有数据,从而大大 ...

  3. ​十种常用的图像压缩算法。

    本文来源  新机器视觉 数据压缩是保留相同或绝大部分数据前提下减小文件大小的过程.它的原理是消除不必要的数据或以更高效的格式重新组织数据.在进行数据压缩时,你可以选择使用有损方法或无损方法.有损方法会 ...

  4. 10个快速优化Web性能的手段

    优化网站的性能需要花费大量的时间,并且如果要根据自己的需求进行优化则花费的时间可能更多. 在本文中,我将向你展示 10 个快速优化 Web 性能的手段,能在 5 分钟内用于你自己的网站.这些捷径对你的 ...

  5. 腾讯会议核心数据库TDSQL,如何做到快速无损在线扩容?

    自去年12月底发布后,腾讯会议40天更新14个版本,8天紧急扩容超过10万台云主机,投入的计算资源超100万核.疫情复工期间,每周都有数万家企业和政府相关机构使用腾讯会议复工复产,通过腾讯会议开拓了云 ...

  6. 三步法助你快速定位网站性能问题

    本文分享自华为云社区<在瀑布下用火焰烤饼:三步法助你快速定位网站性能问题>,原文作者:Kagol . 引言 性能,是一个问题. 每个项目成长到一定的规模,都几乎必然要遇到性能问题,当遇到性 ...

  7. 快速无损原样提取PDF文档中的图片

    网上已经有很多提取PDF文档图片的工具了,但是这些工具要么就是非常庞大,要么就是速度很慢,要么就是导出的图片失真,我对这些工具均不满意,因此为PDF补丁丁开发了快速.无损地提取PDF文档图片的功能. ...

  8. zstd - 一种由Facebook使用的快速数据压缩算法

    Zstandard是一个快速的实时无损数据压缩算法和压缩工具,它提供了由Facebook开发的高压缩比. 分类:Linux命令操作系统  2018-06-09 00:00:00 Zstandard ( ...

  9. 无损压缩算法专题——miniLZO

    目录 一.miniLZO介绍 二.miniLZO的使用 三.VS2013下文件压缩和解压测试 四.STM32F103ZET6平台下的测试 五.总结 六.参考资料 一.miniLZO介绍 miniLZO ...

  10. zstd安装_zstd - 一种由Facebook使用的快速数据压缩算法

    Zstandard (也被称为zstd )是一款免费的开源,快速实时数据压缩程序,具有更好的压缩比,由Facebook开发. 它是用C语言编写的无损压缩算法 (在Java中有一个重新实现) - 因此它 ...

最新文章

  1. C语言基础知识(自己做个笔记,云储存一下)
  2. python命令行参数解析OptionParser类用法实例
  3. OpenCV学习中遇到的小问题—关于图像赋值
  4. Spring Cloud Alibaba【Nacos 服务治理】 高可用保证:Nacos 如何有效构建注册中心集群
  5. python工程师薪资坑吗-想转行,是要入坑Python还是Java?这问题还用问?
  6. LeetCode Reverse Linked List II
  7. 已知二叉树的前序遍历、中序遍历或者中序遍历、后序遍历求二叉树结构的算法
  8. 为什么vs会输出一个框作为结果_检测与分类专辑 | 对精准目标检测的含不确定性的边界框回归...
  9. 接收端收到数据包以后的处理过程
  10. Unsupported Hardware Detected
  11. 《游戏设计师修炼之道:数据驱动的游戏设计》一2.3 创建漏洞:一个例子
  12. Android studio 真机调试出现sdk版本不匹配问题
  13. ubuntu 系统 下载GCC FreeType
  14. MTK 刷机操作说明v2.0(单路)
  15. PHP时间戳与日期之间转换
  16. python实验报告代写_Python 读写CSV作业代写代做、代写Python I/O文件读写程序作业、代写代做python 实验报告...
  17. 注销计算机 用户账户设置,老司机设置win10系统如何注销电脑登录账户的处理手法...
  18. 互联网汽车信息娱乐系统基础框架
  19. Java 面向对象 之 抽象类 abstract
  20. 学会如何更系统地批判性地思考问题

热门文章

  1. MPLAB使用PICKit3.5烧录程序说明
  2. java写便签_JAVA编写便签纸
  3. 微信小程序之tab切换效果
  4. Ti芯片 bq76940锂电池管理系统BMS资料,源程序+PDF原理图,主控stm32f030。
  5. OA系统选型的那些事儿
  6. idea返回上一步快捷键无效
  7. eclipse中的英文与汉语对照表
  8. matlab中怎么看电压和电流值,matlab计算电压有效值
  9. Android Studio中Spinner控件的使用方法2-2
  10. webpack ——自定义Loader,将i18n英文单词首字母转大写