我在jfprefs基准测试网站上玩耍,并在http://jsperf.com/prefix-or-postfix-increment/9上创建了自己的基准测试。
这些基准测试是Javascript for循环的变体,使用前缀和后缀增量器以及Crockford jslint样式的不使用原地增量器。
更新:感谢jfriend00,我得出的结论是性能差异不完全是由于循环迭代引起的,这可以在this version of the test case中看到。正如您所看到的,Firefox较慢,但与我们在最初的测试案例中看到的差距不大。
那么这个声明是为什么呢?
在Firefox上速度慢那么多?
这些基准测试是Javascript for循环的变体,使用前缀和后缀增量器以及Crockford jslint样式的不使用原地增量器。
for (var index = 0, len = data.length; index < len; ++index) {
data[index] = data[index] * 2;
}
for (var index = 0, len = data.length; index < len; index++) {
data[index] = data[index] * 2;
}
for (var index = 0, len = data.length; index < len; index += 1) {
data[index] = data[index] * 2;
}
在运行基准测试几次后,我发现Firefox平均每秒处理约15个操作,而Chrome大约处理300个。
我认为JaegerMonkey和v8在速度上是相当可比的?我的基准测试会有误吗?Firefox是否在这里进行了某种形式的节流,或者Javascript解释器的性能差距真的那么大?更新:感谢jfriend00,我得出的结论是性能差异不完全是由于循环迭代引起的,这可以在this version of the test case中看到。正如您所看到的,Firefox较慢,但与我们在最初的测试案例中看到的差距不大。
那么这个声明是为什么呢?
data[index] = data[index] * 2;
在Firefox上速度慢那么多?
for
循环内放置数学运算和数组操作?你如何知道速度差异是for
循环还是循环内的操作造成的? - jfriend00for
循环的,而这个基准测试并没有准确比较for
循环。 - jfriend00