Java压缩类库的使用-5.性能检测

本文通过测试JDK、Ant和commons-compress在默认设置下的性能,对比了它们在压缩和打包方面的效率。测试结果显示,commons-compress的zip算法压缩速度快,Ant的tar打包速度快,而commons-compress的gzip算法较慢但压缩率较高。同时,Ant的bzip2存在压缩正确性问题。测试代码可供读者根据具体文件调整测试。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  inkfish原创,请勿商业性质转载,转载请注明来源(http://blog.youkuaiyun.com/inkfish )。

  在选择压缩、打包算法的时候,不仅仅要选择算法,还需要选择用哪个实现类库,不同的实现类库实现效率不同,默认压缩比率不同。为了测试JDK、Ant、commons-compress在默认情况下的效率,设计了如下程序:(来源:http://blog.youkuaiyun.com/inkfish)

 

100M大小随机字符串文件生成程序:(来源:http://blog.youkuaiyun.com/inkfish)

上面的代码用于生成随机的半角字符组成的文本文件,大小为100M(1024*1024*100byte)。(来源:http://blog.youkuaiyun.com/inkfish)

性能测试程序:(来源:http://blog.youkuaiyun.com/inkfish)

测试环境:(来源:http://blog.youkuaiyun.com/inkfish)

硬件:Dell Latitude E6400(Intel Core2 Duo P8600、2G内存、7200转高速硬盘)(来源:http://blog.youkuaiyun.com/inkfish)

软件:Windows XP SP3(来源:http://blog.youkuaiyun.com/inkfish)

类库:JDK 1.6.0_11、Ant 1.7.0、commons-compress 1.0、commons-io 1.4、commons-lang 2.4(来源:http://blog.youkuaiyun.com/inkfish)

原始测试结果:(来源:http://blog.youkuaiyun.com/inkfish)

整理后测试结果:(来源:http://blog.youkuaiyun.com/inkfish)

实现类原始文件大小压缩后文件大小压缩耗平均时解压缩平均耗时平均总耗时
CommonsZipCompress10083.213 10451.55 6602.28 17053.84
JdkZipCompress10083.213 10645.64 6665.09 17310.72
JdkGZIPCompress10083.213 10730.44 6715.90 17446.34
JdkZLIBCompress10083.213 11907.67 7120.64 19028.31
AntZipCompress10083.213 10507.71 10176.88 20684.58
AntBzip2Compress10082.999 35818.18 27771.20 63589.38
CommonsGZIPCompress10082.999 35693.11 28079.96 63773.08
CommonsBZip2Compress10083.213113754.73104715.95218470.67
 
实现类原始文件大小压包后文件大小打包耗平均时解包平均耗时平均总耗时
AntTarCompress100100.010 5745.56 4462.98 10208.55
CommonsTarCompress100100.010 5501.18 5807.38 11308.55
CommonsArCompress100100.000 6104.93 5786.56 11891.49
CommonsCPIOCompress100100.000 6636.72 6349.29 12986.01

结论:(来源:http://blog.youkuaiyun.com/inkfish)

1.在各自默认压缩率下,commons-compress包中zip算法具有较快的压缩速度,ant包中tar具有较快的打包速度;(来源:http://blog.youkuaiyun.com/inkfish)

2.commons-compress中的gzip压缩速度远远慢于jdk中的gzip,虽然压缩率比jdk高;(来源:http://blog.youkuaiyun.com/inkfish)

3.ant包中bzip2因为压缩正确性有问题,得到的数据不具有可比性。(来源:http://blog.youkuaiyun.com/inkfish)

4.由于被压缩文件内容由程序自动随机生成,在应用的具体环境中,压缩率、压缩时间肯定有所不同。这里提供的源码特别是测试程序经修改能够针对具体文件进行测试,可以稍微弥补一些不足。(来源:http://blog.youkuaiyun.com/inkfish)

5.因为测试目的原因,不对压缩率进行评价。5(来源:http://blog.youkuaiyun.com/inkfish)

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值