要去马尔代夫渡蜜月了,闪人前最后一贴。

方法是用python准备数据,然后用timeit进行测试。虽然因为python框架的干扰,具体时值不是很准。但是用来做数量级对比和计算足够了。原生数据是一个屏幕截图,4M的数据块。

zlib.compress: 0.054105230093
snappy.compress: 0.00374100804329
zlib.decompress: 0.0157685602903
snappy.decompress: 0.0051297039032

从结果分析,zlib是典型的非对称压缩算法,压缩/解压速度比大约是3.5:1。而snappy的压缩和解压速度在同一个数量级上,甚至在具体的数值上,压缩比解压还要快那么一点。以解压速度为基础的对比,snappy大概比zlib快了3倍。而压缩速度上,则是快了14.5倍。

由于python的干扰是在每个的时间上面增加了一定开销,通常会使得速度比更接近1。也就是说,实际上snappy和zlib的速度比比这个还要大。

另外说一句题外话。按照我们测试下来的数值计算,snappy和zlib的压缩比大概在1:2之间。zlib压缩图形资料时的典型比例是0.05,而snappy则是0.1左右。对于熵比较高的数据,zlib大约是0.33左右的时候,snappy是0.5。都是比2倍大小略小。