几种脚本文本压缩方式压缩比率和解压性能的比较
文章来自:设计学院 | 发表时间:2007-10-23 10:21:50
刚刚修正了一个JSA的bug。
顺便测试了一下文本压缩的性能,和纯packer 压缩,ShrinkSafe+packer压缩。
压缩大小:
jquery-jsa-s.js(JSA的语法压缩):29766 jquery.compressed.js(ShrinkSafe语法压缩):33992
jquery-jsa-st.js(JSA的语法压缩+文本压缩):19526 jquery-packer.js(Packer文本压缩):20977 jquery.compressed-packer.js(ShrinkSafe语法压缩+Packer文本压缩):21839
有点奇怪的是,文本压缩和语法压缩是有一定互补性的,但是ShrinkSafe+Packer比单纯的Packer文本压缩效率还低??
我想可能是ShrinkSafe做的一些语法补全(可省略的 {、}、;、),jQuery编码的风格导致。
Firefox测试数据(10次压缩时间的毫秒数,连续5回测试数据)
jquery-jsa-st.js:784
jquery-packer.js:1265
jquery.compressed-packer.js:1529
jquery-jsa-st.js:718
jquery-packer.js:922
jquery.compressed-packer.js:766
jquery-jsa-st.js:753
jquery-packer.js:872
jquery.compressed-packer.js:828
jquery-jsa-st.js:1438
jquery-packer.js:1484
jquery.compressed-packer.js:1735
jquery-jsa-st.js:687
jquery-packer.js:1236
jquery.compressed-packer.js:1234
IE5 测试数据(连续三回测试数据)
jquery-jsa-st.js:766
--------------------------------------------------------------------------------
jquery-packer.js:9765
--------------------------------------------------------------------------------
jquery.compressed-packer.js:10547
jquery-jsa-st.js:671
--------------------------------------------------------------------------------
jquery-packer.js:9002
--------------------------------------------------------------------------------
jquery.compressed-packer.js:10265
jquery-jsa-st.js:704
--------------------------------------------------------------------------------
jquery-packer.js:8232
--------------------------------------------------------------------------------
jquery.compressed-packer.js:10314
总结
文本压缩是个比较耗时的操作,像JQuery这样大的类库普遍需要接近100毫秒的解压时间。
如果需要兼容IE5这种老古董,那么最好不要用packer的文本压缩,太耗时。
JSA1 对文本压缩做了些改进,表现还可以。
如果要计较脚本文本压缩后的解压开销,建议使用JSA的语法压缩,配合服务器端的gzip压缩。
不推荐dojo 的ShrinkSafe,原因是它的几个安全问题。
JSA 是我写的一个脚本压缩工具。同时具有语法压缩(
不可逆混淆)和文本压缩(
可逆混淆)功能。
需要java 运行环境。目前来说,效率是最高的。
JSA也是JSI的编译打包工具。
JSI 项目主页:
http://www.xidea.org/project/jsi/JSI 下载页也有JSA下载链接。
packer 是国外一个大牛Dean Edwards写的脚本压缩工具,可以在线压缩。主要是文本压缩,因为本身是js写的,没有完整的语法分析,所以不建议使用它的变量替换功能。
http://javascriptcompressor.com/Dojo ShrinkSafe 这个东西虽然现在用的人很多,但是,鉴于它问题多多,不推荐使用,也就不贴出它的地址了。