IE通过函数调用更快运行?
寻找方法来验证我的代码,我碰到了这个jsPerf测试。 除了让我对函数调用缓慢的概念重申以外,没有其他的预期,我用IE 9的结果真的让我陷入循环。 使用函数调用的代码速度更快,但仅限于此一个浏览器。 我用相同的结果多次运行它。 我看不到测试设置不正确。 什么可能导致这个奇怪的结果?
我的用户代理是在Windows Server 2008上运行的Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; WOW64; Trident/5.0
。
免责声明:我是jsPerf.com的创造者。
你的第一个测试如下:
var i = 0;
for (i = 0; i < 1000; i++) {
test()
}
为什么在那里包含for
循环? 它只会扭曲结果。 jsPerf会自动重复测试代码,直到执行足够的测试以获得统计意义的结果。 理想情况下,jsPerf测试尽可能的紧凑,只测试你真正想测试的东西。 在这种情况下,你for
循环性能根本不感兴趣 - 你只是想知道内联代码是否比调用函数快。
如果您对创建强大的jsPerf测试用例的其他技巧感兴趣,请查看我的#jsconfeu2011演示文稿。
注意:我并不是说冗余for
循环是你看到这个结果的原因。 这可能是一个因素,但可能会有其他的东西进一步扭曲结果。 这可能是IE9的“死代码清除”功能踢入。
无论如何,我已经分叉了您的jsPerf测试,删除了循环,并将变量设为全局变量,以避免死代码消除优化。 http://jsperf.com/function-calls-vs-inline/3你可以在IE9中测试这个吗? 目前我没有IE9虚拟机。
链接地址: http://www.djcxy.com/p/67475.html