use*_*196 7 javascript performance
我最近有机会在javascript中循环,我很困惑是否使用for循环或while语句.
var i = foo.length;
while(i--){
}
Run Code Online (Sandbox Code Playgroud)
要么
for(var i=0 ;i<=foo.length;i++){
}
Run Code Online (Sandbox Code Playgroud)
我想从javascript人那里知道哪一个更有效,在什么情况下我们应该相应地使用它们.这与java中的原因相同或有些不同.
在某些浏览器中,某些循环方式更快 - 例如,在Chrome中,for循环速度是其两倍,但在所有浏览器中并没有一致的赢家.如果你发现一个技巧可以在一个浏览器中快速实现它,你将在另一个浏览器中受到惩罚.
不同浏览器的实际性能测试:http://jsperf.com/for-or-while
您应该使用对情况有意义的循环类型.在许多情况下,你在循环中所做的事情比循环本身需要更长的时间.
For 循环是 while 循环的语法糖。它们应该是完全相同的。
但是,您的两个循环在语义上是不同的。一个计数到零,而另一个计数到对象的属性,这必然会慢一些,尽管只是稍微慢一些。将上面的 while 循环与下面的 for 循环进行比较会更有意义:
for (var i = foo.length; i--;) { }
Run Code Online (Sandbox Code Playgroud)
实际上,您使用哪个循环没有显着差异。我读过的每一本书都这么说。您的示例可能有所不同,因为您在 while 循环中使用了递减循环。它往往会更快,因为只评估一个条件。
例如while(i<100)慢于while(i--)
对于 for 循环,您可以在循环之前存储长度并处理该值,而不是每次都检索它。它还会给你一些性能优化。
var fooLength = foo.length;
for(var i=0 ;i<= fooLength;i++){
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6545 次 |
| 最近记录: |