根据What's the Fastest Way to Code a Loop in JavaScript?和Why is to decrement the iterator toward 0 faster than incrementing,
基本的for
循环比for
循环慢,具有简化的测试条件,
即:
console.log("+++++++");
var until = 100000000;
function func1() {
console.time("basic")
var until2 = until;
for (var i = 0; i < until2; i++) {}
console.timeEnd("basic")
}
function func2() {
console.time("reverse")
var until2 = until;
for (until2; until2--;) {}
//while(until2--){}
console.timeEnd("reverse")
}
func1();
func2();
&#13;
正如您可能看到的那样,第一个功能与预期相反,比第二个功能更快。自从这篇oracle文章发布以来有什么变化,或者我做错了什么?
答案 0 :(得分:4)
是的,自文章发布以来发生了一些变化。 Firefox已经从版本3升级到版本38。大多数情况下,当发布新版本的浏览器时,一些事情的表现已经发生了变化。
如果您在不同系统的不同浏览器的不同版本中尝试该代码,您会发现性能会有很大差异。针对不同的Javascript代码优化了不同的浏览器。
由于性能不同,并且您不能依赖任何测量很长时间,如果您需要优化Javascript,基本上有两个原则可以遵循:
为每项任务使用最简单,最常用的代码;这是浏览器供应商将尝试优化的代码。
不要在特定浏览器中寻找最佳性能,寻找任何浏览器中最差的性能。在不同的浏览器中测试代码,并选择一种在任何浏览器中都不会产生非常糟糕性能的方法。