QuickLZ 是一个号称世界压缩速度最快的压缩库,并且也是个开源的压缩库,其遵守 GPL 1, 2 或 3协议。
在QuickLZ的官网上有个关于QuickLZ的测试:
Library | Level | Compressed size | Compression Mbyte/s | Decompression Mbyte/s |
QuickLZ C 1.5.0 | 1 | 47.9% | 308 | 358 |
QuickLZ C 1.4.0 | 1 | 47.9% | 272 | 332 |
QuickLZ C 1.4.0 | 2 | 42.3% | 131 | 309 |
QuickLZ C 1.4.0 | 3 | 40.0% | 31 | 516 |
QuickLZ C# 1.4.0 | 1 | 47.9% | 133 | 132 |
QuickLZ Java 1.4.0 | 1 | 47.9% | 127 | 95 |
LZF 3.1 | UF | 54.9% | 204 | 396 |
LZF 3.1 | VF | 51.9% | 193 | 384 |
FastLZ 0.1.0 | 1 | 53.0% | 173 | 442 |
FastLZ 0.1.0 | 2 | 50.7% | 167 | 406 |
LZO 1X 2.02 | 1 | 48.3% | 169 | 434 |
zlib 1.22 | 1 | 37.6% | 55 | 234 |
在这里,我也对QuickLZ和zlib进行一个对比的测试,看看是不是真的那么快那么好。
QuickLZ有个前端程序叫qpress,可以在QuickLZ的官网上下载下来进行测试。而zlib没有前端程序,所以要自己写一个。
zlib 的测试程序可以根据zlib 的源码中的一个例子进行改写,如下:
在测试zilib是采用了两个压缩方式,一个是最快的压缩(Z_BEST_SPEED)和一个是默认的压缩(Z_DEFAULT_COMPRESSION),在main函数中可以看到。
下面是我在linux下的ntfs分区中,对一个1G的有着fat32文件系统的文件(这个1G的文件是我在windows下用winhex对一个1G的fat32的分区进行拷贝得到的文件)进行压缩后的测试的结果:
QuickLZ采用了稳定的1.4.1版,zlib采用了稳定的1.2.3版。
quickLZ (最低压缩 zlib(默认压缩 zlib (最低压缩率)
率)version 1.4.1 率)version 1.2.3
time Compressed real 2m5.507s real 1m23.828s
1,075,838,976 bytes user 1m44.079s user 1m2.476s
in 1 file(s) into sys 0m3.164s sys 0m2.948s
598,244,013 bytes
real 0m29.478s
user 0m10.209s
sys 0m2.484s
压缩后大小 598244013(571M ) 484103258(462M ) 510911735(488M )
在上面的测试中,我们可以看到,quickLZ的压缩率要比zlib 的低,但压缩率还是可以的,而压缩的速度确实比zlib 的快了很多。quickLZ在最低压缩率的情况下压缩1G的文件,用了29.478秒,压缩到571M,而zlib在默认的压缩率下使用了2分5.507秒,压缩到462M,在zlib在最低压缩率下,也使用了1分23.828秒,压缩到488M。
看来QuickLZ的压缩速度确实并非浪得虚名。
QuickLZ的官网:http://www.quicklz.com/
zlib的官网: http://www.zlib.net/