为什么运行此循环9次比运行8次要长100倍?

Tom*_*ski 11 javascript performance firefox

考虑以下代码:

Test = function() {
}

t = new Test();

for (var i = 0; i < 8; i++) {
  result = t instanceof Test;
}
Run Code Online (Sandbox Code Playgroud)

如果您将迭代次数从8更改为9,则在最新版本的Firefox(41.0.1)中,循环将突然缩短100倍.我在两台不同的PC上测试了它,魔法限制总是8.

这是我使用的JSPerf测试:http://jsperf.com/instanceof-8-times-vs-9-times

有谁知道为什么会发生这种情况?它似乎特定于instanceof.如果您对该对象执行其他操作,则不会发生这种情况,例如检查属性.


注意:我还提交了一个Bugzilla错误.

小智 -2

当值为 9 时,循环 10 次,因此 100x 大概是 10^2 - 即两个字符而不是一个。人们还可以确定执行 100 次是否会导致速度降低 10^3。听起来很疯狂,但是这个 Javascript.