常用数据压缩库的编译与使用
由于在工作中有用到数据压缩的功能,我便查找了一些压缩函数库,对这些函数库进行了简单的实验,简要对比了各自的性能。在这里,我既是对以前工作的总结,也同时希望能给其他人带来一些帮助。
首先,因为我工作中使用的环境是嵌入式Linux系统,采用的是C语言,因此我在选择压缩函数库的时候主要是选择一些能交叉编译的函数库。我前后共实验了三种函数库,分别是:LZO、ZILB和LZMA。分别在Windows平台和嵌入式Linux平台实验。由于我对压缩算法并没有深入的了解,实验的结果也不能确保一定正确,仅仅为作为一个参考。
1. 数据压缩库简介
1.1 LZO库简介
LZO库在描述自己的时候使用的是“实时数据压缩库”(a real-time data compression library),这就意味着LZO库是更加重视数据压缩的速度。该项目的主页是http://www.oberhumer.com/opensource/lzo/,LZO 遵循 GNU 的 GPL 使用许可。
LZO库最初采用ANSI C编写,是一个无损压缩库。它提供多个压缩函数接口,要得到高的压缩率,就会降低压缩速度,然而,解高压缩率的数据并没有明显速度。详细的说明可以参考其工程目录下的doc/LZO.TXT文件,这里简单列出该压缩库的一些特点:
1、解压速度非常快,解压不需要额外的内存空间。
2、压缩速度也非常快,压缩只需要64k的内存。
3、提供函数接口用来牺牲速度来换取高压缩率,但解压速度不降低。
4、有仅仅需要8k内存的压缩算法。
5、算法是线程安全的无损压缩算法。
1.2 ZLIB库简介
ZLIB库是一个通用的数据压缩库,它几乎已经成为了一个业界的标准,在许多软件中得到应用。该项目的主页是http://www.zlib.net/,