模糊的javascript是否会减慢浏览器的速度
Does obfuscated javascript slow a browser down?
我有一个脚本,它被混淆了,开头是这样的:
var _0xfb0b=["'x48'x2E'x31'x36'x28'x22'x4B'x2E
它继续这样超过435.000个字符(文件有425kB),最后这是来了:
while(_0x8b47x3--){if(_0x8b47x4[_0x8b47x3]){_0x8b47x1=_0x8b47x1[_0xfb0b[8]](
new RegExp(_0xfb0b[6]+_0x8b47x5(_0x8b47x3)+_0xfb0b[6],_0xfb0b[7]),
_0x8b47x4[_0x8b47x3]);} ;} ;return _0x8b47x1;}
(_0xfb0b[0],62,2263,_0xfb0b[3][_0xfb0b[2]](_0xfb0b[1])));
我的问题是:与未混淆的脚本相比,浏览器执行方式不是更难吗?如果是,我可能会因为混淆而损失多少时间?尤其是像IE6这样的老浏览器,它们在JS中的性能真的不那么好,必须在这方面花更多的时间,对吧?
在较旧的浏览器上(特别是在初始化时),它确实会显著降低浏览器的速度,但即使在初始化之后,它也会明显降低速度。我有一个严重混淆的文件,初始化大约需要1.2秒,在同一个浏览器中没有混淆,PC大约需要0.2秒,非常重要。
这取决于模糊处理程序的作用。
如果它主要只是重命名标识符,我希望它对性能几乎没有影响,除非它使用的标识符名称人为地长。
如果它扰乱了控制或数据流,它可能会对代码执行产生任意影响。一些控制流加扰可以仅用恒定的开销来完成。
你必须调查混淆的方法才能知道答案。仅仅测量差异可能更容易。
您使用的模糊处理似乎只是将所有字符串常量存储在一个数组中,并将它们放入原始代码中。字符串被模糊到数组中,但仍然显示为字符串。(试试console.log(_0xfb0b)看看我的意思)。
它确实降低了代码初始化的速度。但是,一旦初始化了该数组,对脚本的影响就可以忽略不计。
相关文章:
- fullcalendar在删除导致浏览器挂起的多个事件时速度较慢
- 谷歌地图多边形减慢浏览器速度
- AMD应用程序在浏览器中的加载速度是否快于CommonJS应用程序
- 为什么本机浏览器排序功能的工作速度比快速排序慢
- 简单的Html5画布操作会降低浏览器的速度
- JQuery 错误 -- 减慢在浏览器中查看错误的操作速度
- $.每个遍历 JSON 数据都会减慢浏览器速度
- 用户在火狐浏览器上的输入速度很慢,但不是 chrome
- 重复的 AJAX 请求会降低浏览器速度
- 一页上有四个视频,会减慢浏览器的速度
- Facebook推荐/最近的活动挂在浏览器上,速度非常慢
- 模糊的javascript是否会减慢浏览器的速度
- 调整EaselJS动画的大小,同时'It’It’s播放时不会放慢浏览器的速度
- 浏览器中的音频播放速度操纵
- 谷歌Chrome浏览器速度问题
- WebKit浏览器更新画布的速度很慢
- 关于浏览器缓存,为优化速度加载网站
- 在浏览器中测量下载和上传速度
- 在浏览器中调整视频的播放速度
- 如何使JavaScript运行在正常的速度在Chrome浏览器,即使标签不活跃