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

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级数据压缩的考验而稳定的。
官方网站:http://code.google.com/p/snappy/

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

1GB文本数据测试:

官方网站: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/

来自《HBase: The Definitive Guide》中的一个对比:


Algorithm


% remaining


Encoding


Decoding


GZIP


13.4%


21 MB/s


118 MB/s


LZO


20.5%


135 MB/s


410 MB/s


Zippy/Snappy


22.2%


172 MB/s


409 MB/s

时间: 2024-10-14 11:22:25

几个常用快速无损压缩算法性能比较的相关文章

Zstandard:一种新的无损压缩算法

Zstandard(缩写为Zstd)是一种新的无损压缩算法,旨在提供快速压缩,并实现高压缩比.它既不像LZMA和ZPAQ那样追求尽可能高的压缩比,也不像LZ4那样追求极致的压缩速度. 下面是一组基准测试数据: 压缩算法名称 压缩比 压缩速度(MB/s) 解压速度(MB/s) zlib 1.2.8 -6 3.099 18 275 Zstd 2.872 201 498 zlib 1.2.8 -1 2.73 58 250 LZ4 HC r127 2.72 26 1720 QuickLZ 1.5.1b6

无损压缩算法历史

引言 无损压缩算法可行的基本原理是,任意一个非随机文件都含有重复数据,这些重复数据可以通过用来确定字符或短语出现概率的统计建模技术来压缩.统计模型可以用来为特定的字符或者短语生成代码,基于它们出现的频率,配置最短的代码给最常用的数据.这些技术包括熵编码(entropy encoding),游程编码(run-length encoding),以及字典压缩.运用这些技术以及其它技术,一个8-bit长度的字符或者字符串可以用很少的bit来表示,从而大量的重复数据被移除. 历史 直到20世纪70年代,数

快速定位网站性能问题,提前下班!

大家好,我是小雨小雨,致力于分享有趣的.实用的技术文章. 内容分为翻译和原创,如果有问题,欢迎随时评论或私信,希望和大家一起进步. 分享不易,希望能够得到大家的支持和关注. 查看network时间 直接来一张大图你怕不怕?哈哈 咱们先看看谷歌浏览器network中waterfall各字段的含义哈.简单看下就成,用到了再查不耽误的. Queueing: 排队时间,比如出现以下几种情况的时候,将进入排队 当前请求前有优先级更高的其他请求 HTTP的1.0和1.1版本中,如果对一个域发送超过六个请求,

4个常用Linux VPS/服务器性能测评的脚本工具整理

我们网友在看到或者买到一台Linux VPS主机之后会做什么?肯定是要看看新买的这台机器是不是正如我们看到商家宣传或者网友说的那么好,比如在性能.速度.评分.IO读写上面的数据是否如何我们使用需要.当然,任何的软件测试或者别人的测试都不代表自己使用的效果,我们还是需要经受自己使用才能看到这个产品是否符合我们的用途. 4个常用Linux VPS/服务器性能测评的脚本工具整理4个常用Linux VPS/服务器性能测评的脚本工具整理 每一个网友都有自己的评判产品的标准或者工具,一般我们使用的工具都来自

快速诊断Linux性能

导读 当你为了解决一个性能问题登录到一台 Linux 服务器:在第一分钟你应该检查些什么? 通过运行下面十个命令,你就能在六十秒内粗略地了解系统正在运行的进程及资源使用情况.通过查看这些命令输出的错误信息和资源饱和度(它们都很容易看懂),你可以接下来对资源进行优化.饱和是指某个资源的负载超出了其能够处理的限度,一旦出现饱和,它通常会在请求队列的长度或等待时间上暴露出来. uptime dmesg | tail vmstat 1 mpstat -P ALL 1 pidstat 1 iostat -

常用快速原型设计工具大比拼、原型设计工具哪个好用

原型设计是交互设计师与PD.PM.网站开发工程师沟通的最好工具.而该块的设计在原则上必须是交互设计师的产物,交互设计以用户为中心的理念会贯穿整个产品.利用交互设计师专业的眼光与经验直接导至该产品的可用性. 简单说,“原型”是在项目前期阶段的重要设计步骤,主要以发现新想法和检验设计为目的,重点在于直观体现产品主要界面风格以及结构.并展示主要功能模块以及之间相互关系,不断确认模糊部分,为后期的视觉设计和代码编写提供准确的产品信息. 目的: 下列角色使用用户界面原型: 用例阐释者,用来了解用例的用户界

常用的Linux服务器性能查看命令

命令名称 说明 top 进程监控命令,用来监控系统的整体性能. 可以显示系统负载,进程,cpu,内存,分页等信息,常用shift+m和shift+p来按memory和cpu使用对进程进行排序. vmstat 系统监控命令,重点侧重于虚拟内存,也可以监控cpu,进程,内存分页以及IO的状态信息. 例如,vmstat 3 10,每隔3秒输出结果,执行10次. iostatc 用于输出cpu状态和IO状态的工具,可以详细展示系统的IO信息. 例如iostat -dxmt 10,每10秒以MB的格式输出

Lua Profiler——快速定位Lua性能问题

导读 随着Lua在项目中的大量使用,它所带来的性能问题也逐步成为了项目运行时的重大性能瓶颈之一.特别是内存相关的性能问题,无论是内存分配过大还是内存泄露无法回收,目前都已经在不少研发项目中集中爆发. UWA推出的GOT Online中的Lua模式已经慢慢成为研发团队对Lua进行日常性能监控的有效手段.因此,也有越来越多的团队反馈,在监控到table数持续上涨,引用Mono对象持续增多等等问题时,应该如何快速地解决? 本次博物纳新推荐的开源库项目:LuaProfiler-For-Unity,相信可

常用快速读入快速输出

此文为博主原创,转载时请通知博主,并把原文链接放在正文醒目位置. 简要介绍 众所周知,就运行速度而言,getchar()快于scanf快于cin,putchar()快于printf快于cout. 但getchar()和putchar()每次只能操作一个字符,使用起来比较麻烦. 于是就出现了快读.快速输出. 它们的原理都是把需要读入\输出的数字(本文只能用于处理整数)一位一位地输出,从而减少运行时间. 代码 1 #include<cstdio> 2 using namespace std; 3