压缩测试:LZMA vs ZLIB

转载http://blog.domlib.com/articles/388.html


Flash Player11.4之后提供了LZMA的压缩支持,网上一直说这种压缩格式压缩率比ZLIB高很多,解压快很多。我感觉好像不太科学,还是自己测试下比较靠谱。测试的时候同时加上了天地会上给的as版LZMA解压类(可以用于低版本的FP)。

 
  
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
package
{
     import flash.display.Sprite;
     import flash.utils.ByteArray;
     import flash.utils.CompressionAlgorithm;
     import flash.utils.getTimer;
 
     import org.flexlite.domUtils.FileUtil;
     import org.flexlite.domUtils.StringUtil;
 
     /**
      *
      * @author DOM
      */
     public class CompressTest extends Sprite
     {
         public function CompressTest()
         {
             var bytes:ByteArray = FileUtil.openAsByteArray( "doc.json" );
             var t: int = getTimer();
             bytes.compress();
             trace ( "zlib压缩:" +(getTimer()-t)+ "ms" + " size:" +StringUtil.toSizeString(bytes.length, 2 ));
             t = getTimer();
             bytes.uncompress();
             trace ( "zlib解压:" +(getTimer()-t)+ "ms" );
             t = getTimer();
             bytes.compress(CompressionAlgorithm.LZMA);
             trace ( "lzma压缩:" +(getTimer()-t)+ "ms" + " size:" +StringUtil.toSizeString(bytes.length, 2 ));
             t = getTimer();
             bytes.uncompress(CompressionAlgorithm.LZMA);
             trace ( "lzma解压:" +(getTimer()-t)+ "ms" );
             bytes.compress(CompressionAlgorithm.LZMA);
             t = getTimer();
             bytes = LZMA.decode(bytes);
             trace ( "LZMA.AS解压:" +(getTimer()-t)+ "ms" );
         }
     }
}

输出结果:

zlib压缩:255ms size:5.08MB
zlib解压:12ms
lzma压缩:1974ms size:5.11MB
lzma解压:399ms
LZMA.AS解压:27381ms

这结果真让人大失所望,不知道是不是测试的有问题,没有更小,反而更大了。而且解压时间长了几十倍。as版的LZMA解压时间更是无法接受。还是继续用zlib吧。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值