internet-explorer-9 - IE 通过函数调用运行得更快?

标签 internet-explorer-9 function-calls performance

寻找优化我的代码的方法,我偶然发现了 this jsPerf test .除了重申我对函数调用缓慢的概念之外,别无所求,我在 IE 9 上的结果确实让我陷入了循环。使用函数调用的代码速度更快,但仅限于这一浏览器。我多次运行它,结果相同。我看不出测试设置不正确。是什么导致了这个奇怪的结果?

我的用户代理是 Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; WOW64; Trident/5.0在 Windows Server 2008 上运行。

最佳答案

免责声明:我是jsPerf.com的创建者.

您的第一个测试如下:

var i = 0;
for (i = 0; i < 1000; i++) {
  test()
}

为什么包括 for循环在那里?它只会扭曲结果。 jsPerf 会自动重复测试代码,直到它执行了足够多的测试以达到具有统计意义的结果。理想情况下,jsPerf 测试尽可能紧凑,并且只测试您真正想要测试的内容。在这种情况下,您对 for 不感兴趣根本没有循环性能——你只想知道内联代码是否比调用函数更快。

如果您对创建健壮的 jsPerf 测试用例的其他技巧感兴趣,check out my #jsconfeu2011 presentation .

注意:我不是说多余的 for循环是您看到此结果的原因。这可能是一个因素,但可能还有其他因素进一步扭曲了结果。 This might be IE9’s “dead code removal” feature kicking in.

无论如何,我已经 fork 了您的 jsPerf 测试,删除了循环,并将变量设为全局变量,以避免死代码消除优化。 http://jsperf.com/function-calls-vs-inline/3你能在 IE9 中测试这个吗?我目前手边没有 IE9 VM。

关于internet-explorer-9 - IE 通过函数调用运行得更快?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13954881/

相关文章:

html - IE9中的html5音频无法播放

css - Internet Explorer 自动切换到兼容模式(IE9 和 IE10)

c - 函数调用的参数太多,我该怎么办?

c - 初学者关于C程序函数调用栈、序列点(sequencing)的疑问

javascript - 如何在javascript中以特定时间延迟顺序显示多个图像

html - IE9 下移列

internet-explorer-9 - 如何在 IE9 中禁用浏览器模式的自动更改?

Javascript 函数调用具有可选属性

Windows (Vista) : Set process-priority on a program shortcut

performance - Propel 2 和 Doctrine 2 有详细的比较吗