JSA是一个大概在2006年底开发的JS分析压缩工具,最初出现的时候相比同类产品,优势明显。
后来出现了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压缩结果。
分享到:
相关推荐
资源为代码patch,主要修复设置-显示-休眠中无永不休眠选项。为防止语言资源导致报错,重新在arrays添加选项,永不休眠原理只是将时间设置为Integer.MAX_VALUE
移动硬盘有休眠功能的朋友的福音!硬盘插上电脑后,看下移动硬盘盘符,先在c盘新建一个yes.txt记事本文件,然后用记事本打开下载的批处理文件如下: :noparms (c盘文件的位置)(移动硬盘位置) if exist yes.txt ...
51单片机的休眠模式
利用PowerManager中 goToSleep和wakeUp方法实现手机强制休眠和唤醒,demo已测试通过
瑞芯技术 Rockchip 休眠唤醒 V0.1-20160729
防止计算机进入屏保或休眠状态,可以指定时间段有效。
android休眠与唤醒驱动流程分析 android wakelock 休眠 唤醒
Qt5.10 或Mac检测系统休眠,PC和Mac均通过。 貌似在Qt5上都适用
是一个可执行文件,可通过自定义快捷键(见本人教程https://blog.csdn.net/qq_43476358/article/details/118851355),给Windows休眠设置快捷键达到使windows可以"一键"休眠的效果.程序员有的时候累到极致,晃动下鼠标...
待机与休眠的区别 1、待机”电源管理模式 待机模式主要用于节电,该功能使你可不需重新启动计算机就可返回工作状态。待机模式可关闭监视器和硬盘、风扇之类设备,使整个系统处于低能耗状态。在你重新使用计算机时,...
在正常情况下,Android系统会让程序和服务进入休眠状态以节约...然而在开发Android程序时,有时候在程序运行的时候,不能让系统休眠,否则有一些运行会停止,因此我们需要设置禁止休眠。文档里面有两种方法,紧供参考。
zigbee低功耗,休眠,唤醒 zigbee低功耗,休眠,唤醒
联想工程师专用小工具 启用或禁用电脑休眠工具V4.01.1联想工程师专用小工具 启用或禁用电脑休眠工具V4.01.1联想工程师专用小工具 启用或禁用电脑休眠工具V4.01.1联想工程师专用小工具 启用或禁用电脑休眠工具V4.01.1...
找回Windows XP SP2的“休眠” 通常情况下,当我们单击开始菜单中的“关闭计算机”时,关机界面中并不会显示“休眠”按钮,而是仅显示如图1所示的待机、关闭、重新启动这三个按钮。如果你希望在关闭计算机时显示...
Android系统的休眠,组合代码介绍了几种休眠和唤醒的流程。
有人说我不喜欢休眠,我要直接关机。那我们就把“休眠”消失…… 在运行里输入:powercfg.exe /hibernate off即可 END 小知识 睡眠(Sleep):切断除内存的其它设备的供电,数据都还在内存中。需要少量电池来维持...
绿联JMS578芯片硬盘盒关闭休眠工具+教程
适用于基于zigbee协议的应用中关于休眠的一段示范代码
Qt Windows 休眠唤醒信号
这是绿屏 硬盘盒子 的休眠方法 , 为了解决游戏一卡一卡的问题,不少游戏采用的按需加载游戏资源的方法,因此硬盘老是休眠,游戏就会一卡一卡的。 让我很不爽, 因此,需要禁用的朋友们。不要错过了。