javascript - 为什么谷歌浏览器中使用eval的作用域代码性能反而更强?
大家讲道理
大家讲道理 2017-04-10 18:04:44
0
0
672

网上有很多关于eval影响性能的讨论,测试代码如下:

(function(){ var i,t=new Date; for(i=0;i<1E8;i++); console.log("正常环境:"+(new Date-t)); })(); (function(){ eval(""); var i,t=new Date; for(i=0;i<1E8;i++); console.log("eval影响:"+(new Date-t)); })(); (function(){ "use strict"; eval(""); var i,t=new Date; for(i=0;i<1E8;i++); console.log("严格模式eval影响:"+(new Date-t)); })(); (function(){ (function(){ "use strict"; eval(""); })(); (function(){ var i,t=new Date; for(i=0;i<1E8;i++); console.log("完全隔离的严格模式eval影响:"+(new Date-t)); })(); })();

windows64位系统中,在ie、火狐下都得到了印证。但是谷歌浏览器的表现却让人大跌眼镜,非但时间没多,还少了:

【ie之edge】

正常环境:4556(太坑了!)
eval影响:8764(其实相对自身而言区别并不大)
严格模式eval影响:8742
完全隔离的严格模式eval影响:4378

【火狐】

正常环境:92(太刁了~)
eval影响:1680(太坑了!当然是相对自身而言。)
严格模式eval影响:1494(略好,符合预期。)
完全隔离的严格模式eval影响:76(竟然略快,试了几次都是,不过一个数量级算误差?)

【谷歌】

正常环境:1003
eval影响:308(什么情况?)
严格模式eval影响:305
完全隔离的严格模式eval影响:979

请问这是什么情况,为什么?苹果浏览器下又如何呢?

莫非,类似于触发了使用更多内存来加速的密集计算模式(我乱说的),总之有某种转换的代价?

大家讲道理
大家讲道理

光阴似箭催人老,日月如移越少年。

reply all (0)
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
About us Disclaimer Sitemap
php.cn:Public welfare online PHP training,Help PHP learners grow quickly!