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

网上有很多关于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