网上有很多关于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、火狐下都得到了印证。但是谷歌浏览器的表现却让人大跌眼镜,非但时间没多,还少了:
正常环境:4556(太坑了!)
eval影响:8764(其实相对自身而言区别并不大)
严格模式eval影响:8742
完全隔离的严格模式eval影响:4378
正常环境:92(太刁了~)
eval影响:1680(太坑了!当然是相对自身而言。)
严格模式eval影响:1494(略好,符合预期。)
完全隔离的严格模式eval影响:76(竟然略快,试了几次都是,不过一个数量级算误差?)
正常环境:1003
eval影响:308(什么情况?)
严格模式eval影响:305
完全隔离的严格模式eval影响:979
请问这是什么情况,为什么?苹果浏览器下又如何呢?
莫非,类似于触发了使用更多内存来加速的密集计算模式(我乱说的),总之有某种转换的代价?
光阴似箭催人老,日月如移越少年。