recherche

Maison  >  Questions et réponses  >  le corps du texte

javascript - 为什么谷歌浏览器中使用eval的作用域代码性能反而更强?

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

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

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

大家讲道理大家讲道理2776 Il y a quelques jours731

répondre à tous(0)je répondrai

Pas de réponse
  • Annulerrépondre