for-loop optimization - 需要与否?

时间:2010-12-18 08:24:44

标签: c# optimization for-loop

我是否必须像下面那样优化我的FOR循环,否则编译器会为我做这个?

//this is slow, right?
for (int i = 0; i < menuItem.DropDownItems.Count; i++)
{
    ...
}

//this should be much faster right?
for (int i = 0, count = menuItem.DropDownItems.Count; i < count; i++)
{
    ...
}

PS。我打赌这已经发布了,但我没有发现任何内容,抱歉可能有重复。

PPS。对不起,我编写了很多JavaScript代码 - 我们必须考虑这些优化......在.net世界中可能看起来很荒谬。

2 个答案:

答案 0 :(得分:20)

嗯,这取决于DropDownItems.Count的实现方式 - 但坦率地说,可能是一个简单的字段支持的属性...这将使第一个代码与第二,但很多更具可读性。

首先是可读性 - 然后仅在必要时测量性能和微观优化。

在可能性的基础上,首先选择foreach循环,然后再考虑可读性。

即使你想要使用临时变量,我也会保持for循环本身简单,将计数提升到单独的变量。不可否认,这意味着范围更广,但更简单:

int count = menuItem.DropDownItems.Count;
for (int i = 0; i < count; i++)
{
    ...
}

但这只是个人偏好。

答案 1 :(得分:0)

...部分是什么?在任何这类问题中,我的第一反应就是问“在这种情况下它是否重要?”表现总是相对的。如果确切的代码行在堆栈上或在其末尾超过10%的时间,那么值得担心,这通常是不太可能的。