网上有很多关于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
请问这是什么情况,为什么?苹果浏览器下又如何呢?
莫非,类似于触发了使用更多内存来加速的密集计算模式(我乱说的),总之有某种转换的代价?
光阴似箭催人老,日月如移越少年。