JS中的函数声明速度差异

Posted

技术标签:

【中文标题】JS中的函数声明速度差异【英文标题】:Function declaration speed difference in JS 【发布时间】:2011-05-22 17:12:55 【问题描述】:

我运行了一个简单的 jsperf 测试,在 Firefox 中运行时一切都按预期进行,但是当我在 Google Chrome 中运行测试时,我感到很困惑。

测试是测试在 javascript 中声明函数然后调用它们的不同方式。我的猜测是 Chrome 正在对 JavaScript 函数进行某种优化,但我不确定是什么或为什么会有如此大的差异。非常感谢任何有助于更好地理解这一点的帮助或链接。

测试链接 => http://jsperf.com/function-assignment-semicolon/2

在 Firefox 中测试运行:

在 Chrome 中测试:


编辑:

我期待我从 Firefox 获得的结果,因为我希望它们是 - 每次测试都差不多 - 比在 Google Chrome 中运行时慢

【问题讨论】:

你为什么期待 Firefox 显示的结果? 我认为这是对微优化的强烈影响,除非你真的想了解不同浏览器如何优化的内部原理,否则我会说 - 转储它! @Gumbo,我希望它们与 Chrome 相当相似且速度较慢,但​​确实如此。 不确定我是否会在这里跳上 micro-optimization = bad 火车,这个问题很有趣。话又说回来,不同的 Javascript 引擎产生不同的结果既不是震惊也不是启示...... 【参考方案1】:

死代码,完美的优化器会删除测试中的所有内容。各种新闻网站都提到了这一点,最近发布了谷歌的曲轴引擎。样式之间的差异表明了实现死代码优化的难度。

http://tech.slashdot.org/story/10/12/07/2027259/Google-Quietly-Posts-Big-JavaScript-Engine-Update

【讨论】:

很好的链接,但我认为我的 chrome 版本没有您的链接所谈论的更新。

以上是关于JS中的函数声明速度差异的主要内容,如果未能解决你的问题,请参考以下文章

javascript函数声明和范围差异[重复]

JS高程7.函数表达式

在静态构造函数中或外部声明静态字段之间的差异

js函数中的几个特点

JavaScript连载15-return函数声明方式差异化回调函数

JavaScript连载15-return函数声明方式差异化回调函数