Google Snappy - 一个高速压缩库

阅读数:12392 2011 年 4 月 7 日

话题:Google架构语言 & 开发

Snappy已经被 Google 开源,作为一个压缩库,它可以利用单颗 Intel Corei7 处理器内核处理至少每秒 250MB~500MB 的数据流。

Snappy的前身是 Zippy。虽然只是一个数据压缩库,它却被 Google 用于许多内部项目程,其中就包括 BigTable,MapReduce 和 RPC。Google 宣称它在这个库本身及其算法做了数据处理速度上的优化,作为代价,并没有考虑输出大小以及和其他类似工具的兼容性问题。Snappy 特地为 64 位 x86 处理器做了优化,在单个 Intel Core i7 处理器内核上能够达到至少每秒 250MB 的压缩速率和每秒 500MB 的解压速率。

如果允许损失一些压缩率的话,那么可以达到更高的压缩速度,虽然生成的压缩文件可能会比其他库的要大上 20% 至 100%,但是,相比其他的压缩库,Snappy 却能够在特定的压缩率下拥有惊人的压缩速度,“压缩普通文本文件的速度是其他库的 1.5-1.7 倍,HTML 能达到 2-4 倍,但是对于 JPEG、PNG 以及其他的已压缩的数据,压缩速度不会有明显改善”。

Google 极力赞扬 Snappy 的各种优点,Snappy 从一开始就被“设计为即便遇到损坏或者恶意的输入文件都不会崩溃”,而且被 Google 在生产环境中用于压缩 PB 级的数据。其健壮性和稳定程度可见一斑。

Snappy 也可以用于和其他压缩库 -zlib、LZO、LZF、FastLZ 和 QuickLZ- 做对比测试,前提是你在机器上安装了这些压缩库。Snappy 是一个 C++ 的库,你可以在产品中使用,不过也有一些其他语言的版本,例如HaskellJavaPerlPythonRuby

Snappy 采用新 BSD 协议开源。

查看英文原文:Google Snappy–A Fast Compressing Library