注册循环是最好的方法

时间:2011-08-23 12:36:37

标签: performance

我使用for循环以2种方式编写代码,如下所示

第一种方式

for(int i=0;i<myList.Items.Count;i++)
{
.....
.....
.....
}

第二种方式

int itemsCount = myList.Items.Count;
for(int i=0;i<itemsCount;i++)
{
.....
.....
.....
}
我认为

第一种方式更好,即使我的每一个增量值都重视它的检查 (i&lt; myList.Items.Count) 因为在运行时它只是用mymeroy refrence替换myList.Items.Count 所以根据我的说法,如果我采用一个新的局部变量来分配项目的数量,那只是浪费的记忆。

我想知道当我编写类似上面的代码时它是如何起作用的并告诉我哪种方式在性能方面更好一些

1 个答案:

答案 0 :(得分:0)

我认为第一种方式(在某些编译器中)在某些情况下是更优化的方式。

你没有说出一种语言,但它可能是c# - 所以我会回答那个编译器。在C#中,我相信以前的运行方式更快,因为它允许编译器抛出数组边界检查,如果您正在访问循环中的项目成员。如果使用itemsCount变量,编译器跟踪循环中使用的变量具有安全值会变得更加复杂。这只是本地作用域数组的情况。

该论点可能适用于其他语言,例如可能使用类似外观的Java。

这是C#中for循环的另一个question that addresses this问题。

我还要添加(根据@Evan关于这个问题的评论),除非您特别需要快速的代码段,否则很少需要这样的优化。写出最具可读性且不太可能首先导致问题的内容,然后在必要时进行优化。