for-loop optimization - 需要与否?

Ale*_*lex 17 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++)
{
    ...
}
Run Code Online (Sandbox Code Playgroud)

PS.我打赌这已经发布但我没有找到任何东西,抱歉可能有重复.

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

Jon*_*eet 20

嗯,这取决于如何DropDownItems.Count实现-但坦率地说这是可能是一个简单的现场支持的财产......这将使第一个代码一样快,第二,但很多更具可读性.

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

在可能性的基础上,尽可能选择foreach循环开始......

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

int count = menuItem.DropDownItems.Count;
for (int i = 0; i < count; i++)
{
    ...
}
Run Code Online (Sandbox Code Playgroud)

尽管如此,这只是个人偏好.

  • 同意,也有这个用户界面的东西剃毛那个纳秒不会在任何一天真正点亮.与重绘屏幕所需的时间相比,这些东西是花生.通过不阻止UI线程集中于响应式UI,这将在用户脸上带来微笑. (2认同)