锁定老帖子 主题:休眠一年有余的JSA,优势依然
精华帖 (6) :: 良好帖 (5) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2009-06-11
最后修改:2009-06-11
后来出现了yuicompressor,风光不再了,两者貌似压缩比例差距很小。都已经接近了语法压缩的极限。 无聊一下,分析一下相比YUI,JSA到底还有拉些优势呢,这可得用专业的眼光: JSA 压缩结果 function group1(){var A;function $($,_){return $+_+$;}function _(){var _,A,$;function B($,_){return $+_+$;}}}function group3(){var B,_,$;function A($,_){return $+_+$;}} YUI压缩结果 function group1(){var a;function b(e,d){return e+d+e}function c(){var e,h,g;function f(i,d){return i+d+i}}}function group3(){var c,a,d;function e(f,b){return f+b+f}}; 查一下大小:JSA是168,YUI是166字节,怎么搞的,JSA怎么可能比YUI低呢?仔细一看,YUI是开启了语法补全的选项。 晕,跟我玩阴的!你是鸡蛋碰石头。 吧JSA “删除多余括弧”这个选项打开。165字节,差距太小了。 应该吧脚本搞复杂一点: function group1(){var A;function $($,_){return $+_+$}function _(){var _=1,A=2,$;function B($,_){return $+_+$}}}function group3(){var B=1,_=2,$;function A($,_){return $+_+$}} function group1(){var a;function b(e,d){return e+d+e}function c(){var e=1;var h=2;var g;function f(i,d){return i+d+i}}}function group3(){var c=1;var a=2;var d;function e(f,b){return f+b+f}}; 结果是173->190 优势明显一点了。 将结果zip处理一下:85/106 优势进一步加大。 这些数据大家可能会觉得晕了,好了,我现在就解释一下产生这些差异的原因吧。 总结 1。语法优化上的优势: YUI在转换优化等价语法,去处可兼容语法,导致语法压缩结果本身差距,如合并var、如删除多余括弧,分号等,这方面能力相比JSA还有较大差距。 2。JSA也更有利于Gzip压缩 JSA 在变量重用的算法更好,对于类似的语法结构能翻译成相同的结果。 如函数“function $($,_){return $+_+$}” JSA中三次出现相同结构,结果都翻译成相同的文本,而YUI是没有做到这点。 根据文本压缩的原理,只有重复率更高,才能达到更好的gzip压缩结果。 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2009-06-11
高!
|
|
返回顶楼 | |
发表时间:2009-06-11
mootools 1.2.2
jsa:63849, yui:65675. |
|
返回顶楼 | |
发表时间:2009-06-11
Army 写道 mootools 1.2.2
jsa:63849, yui:65675. Gzip一下估计差距能更大一点 |
|
返回顶楼 | |
发表时间:2009-06-11
找个大头帮忙推广下(说服某个著名的库,如jquery啥,的用JSA提供mini包)。
|
|
返回顶楼 | |
发表时间:2009-06-11
不压缩差1826
DeflateCompressionLevel: 1 jsa: 23535,yui: 24371 差836 DeflateCompressionLevel: 9 jsa: 19817, yui: 20465 差639 反而是压缩越厉害,差得越小了。 不过居然能到20k以下,这玩意儿可真厉害。 |
|
返回顶楼 | |
发表时间:2009-06-11
Army 写道 不压缩差1826
DeflateCompressionLevel: 1 jsa: 23535,yui: 24371 差836 DeflateCompressionLevel: 9 jsa: 19817, yui: 20465 差639 反而是压缩越厉害,差得越小了。 不过居然能到20k以下,这玩意儿可真厉害。 算比率: 未压缩: jsa:63849, yui:65675. 比率是:0.9721964217738865 压缩后比率是 0.9656969348816216,0.9683361837283166 差距还是更大一点,不过,与我想象的差距还是差很远的。 看来理论和实际还是有差距的,我当时推断的一个先决条件是,代码中后相似代码,可貌似mootools代码质量挺好,没有这个,自然也就导致我推断结果的偏差了。 另外,新版的JSA默认是不开启语法括弧,分号兼容压缩的。这点和YUI就处在不公平竞争的地位了:( |
|
返回顶楼 | |
发表时间:2009-06-11
我们实际的代码1.5MB,jsa+deflate下来,只有129kb,算下来0.0848,十分之一不到
|
|
返回顶楼 | |
发表时间:2009-06-11
哦 是这样啊 感谢楼主啊 我说 怎么好多 js框架都是怪怪的 原来是被压过~!~
|
|
返回顶楼 | |
发表时间:2009-06-11
nihongye 写道 我们实际的代码1.5MB,jsa+deflate下来,只有129kb,算下来0.0848,十分之一不到
1.5M 不简单啊,呵呵,偷偷问一下,是什么工程呢? |
|
返回顶楼 | |