Web 技术研究所

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

arguments、callee、caller,的性能实验

  包括前天翻译的stackoverflow的那个回答,很多文章只对arguments和其子对象从理论上做了分析的,并没有提供实验数据。而浏览器对这些东西的具体实现方式到底是咋样的咱也没法把各引擎源码都看过。所以我觉得很需要一份实验数据来说明这个问题。
  测试代码: (function f(e){
  if(e)return;
  arguments;
  var i,t;
  t=new Date;
  for(i=0;i<1E6;i++)f(1);
  console.log(new Date-t+" 存在arguments");
})();
(function f(e){
  if(e)return;
  arguments.callee;
  var i,t;
  t=new Date;
  for(i=0;i<1E6;i++)f(1);
  console.log(new Date-t+" 存在arguments.callee");
})();
(function f(e){
  if(e)return;
  arguments.callee.caller;
  var i,t;
  t=new Date;
  for(i=0;i<1E6;i++)f(1);
  console.log(new Date-t+" 存在arguments.callee.caller");
})();
(function f(e){
  if(e)return;
  f.caller; 
  var i,t;
  t=new Date;
  for(i=0;i<1E6;i++)f(1);
  console.log(new Date-t+" 存在f.caller");
})();

  JavaScript-Garden中说arguments不会对性能产生影响,我觉得这不对,至少从测试结果上来看是不对的!上次翻译的“为什么不赞成使用caller?”中就有提到使用arguments会带来巨大的性能开销,另外还提到了内联优化的问题,这个问题JavaScript-Garden中也有提及,但实际上内联优化对JavaScript并没有带来多少性能上的成效,主要问题还是出在arguments上!
网名:
54.226.58.*
电子邮箱:
仅用于接收通知
提交 悄悄的告诉你,Ctrl+Enter 可以提交哦
神奇海螺
[查看全部主题]
各类Web技术问题讨论区
发起新主题
本模块采用即时聊天邮件通知的模式
让钛合金F5成为历史吧!
次碳酸钴的技术博客,文章原创,转载请保留原文链接 ^_^