Web 技术研究所

我一直坚信着,Web 将会成为未来应用程序的主流

不同方法执行代码的效率

  之前的文章“eval对代码效率的影响”中,得出的结果是eval稍慢了点。但是那个测试过程有个地方错误了。由于直接把eval放在了全局作用域中执行,所以测试结果有偏差。后来的测试中,eval在严格模式下会产生新的作用域,所以才得到正常结果。
  这回咱也顺便把创建script标签来执行代码的方式也放入其中,下面是测试代码
(function(){
  var i,t=new Date,o=[];
  for(i=0;i<1E7;i++)o[i]=i;
  console.log("正常执行",new Date-t);
})();

s=document.createElement("script");
s.textContent=
  "(function(){"+
  "var i,t=new Date,o=[];"+
  "for(i=0;i<1E7;i++)o[i]=i;"+
  "console.log(\"script执行\",new Date-t);"+
  "})();";
document.documentElement.appendChild(s);

eval(
  "(function(){"+
  "var i,t=new Date,o=[];"+
  "for(i=0;i<1E7;i++)o[i]=i;"+
  "console.log(\"eval执行\",new Date-t);"+
  "})();"
);

  这回的测试结果是,他们的效率差异就基本小到可以忽略了。所以无论何种方式解析代码,代码运行在引擎上的最终行为都是一样的。对于完全相同的代码,影响它运行效率的只有作用域。不过解析代码本身是一个复杂的过程,我就不讨论解析代码本身的效率问题了。我想只要稍微有点常识的人都不会在大循环中使用eval之类的东西。
网名:
34.203.213.*
电子邮箱:
仅用于接收通知
提交 悄悄的告诉你,Ctrl+Enter 可以提交哦
神奇海螺
[查看全部主题]
各类Web技术问题讨论区
发起新主题
本模块采用即时聊天邮件通知的模式
让钛合金F5成为历史吧!
次碳酸钴的技术博客,文章原创,转载请保留原文链接 ^_^