这些有效的循环优化是什么?

时间:2015-06-19 17:20:35

标签: javascript c# optimization foreach

如果我做了类似下面的事情,这被认为是不理想的(表现明智的)吗?

// Is this optimal?
foreach (var fruit in basket.Fruits())
{
  // ....
}

// What about this?
for (var i = 0; i < basket.Fruits().length; ++i) {
  // ....
}

// Alternate way.
var fruits = basket.Fruits();
foreach (var fruit in fruits) 
{
  // ....
}

我正在寻找适用于.Net和Javascript的答案。

谢谢。

1 个答案:

答案 0 :(得分:2)

两者都具有同样的表现。 basket.Fruits()返回一个对象,JavaScript将为该对象创建一个迭代器。

另一种解决方案是使用

Object.keys(basket.Fruits()).forEach(function(fruit) {
  // ...
});

无论哪种方式,都不要专注于这种优化。 JavaScript很快,并且有许多自动优化。您应该专注于使您的代码尽可能清晰。完成后,如果发现速度很慢,请专注于优化该部分。

根据您的编辑,您可以将数组的长度存储在循环的初始化表达式中的变量中。然后谓词表达式可以比较i<len而不是每次迭代计算数组长度。

for (var i=0; len=basket.Fruits().length; i<len; i++) ...