Performance Reg for loop哪种方法是最好的

Performance Reg for loop哪种方法是最好的,performance,Performance,我用下面两种方法编写了使用for循环的代码 第一条路 for(int i=0;i<myList.Items.Count;i++) { ..... ..... ..... } for(inti=0;i我认为在某些情况下,第一种方法是(在某些编译器中)更理想的方法 您没有声明语言,但它可能是c#-因此我将为该编译器负责。在c#中,我相信前一种运行方式更快,因为它允许编译器在访问循环中的项成员时放弃数组边界检查。如果使用itemsCount变量,编译器跟踪循环中使用的变量具有安全值。这仅适用于

我用下面两种方法编写了使用for循环的代码

第一条路

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

for(inti=0;i我认为在某些情况下,第一种方法是(在某些编译器中)更理想的方法

您没有声明语言,但它可能是c#-因此我将为该编译器负责。在c#中,我相信前一种运行方式更快,因为它允许编译器在访问循环中的项成员时放弃数组边界检查。如果使用itemsCount变量,编译器跟踪循环中使用的变量具有安全值。这仅适用于局部作用域数组

这一论点可能适用于其他可能使用类似循环的语言,如Java

这里还有一个关于C#中for循环的问题


我还要补充(在@Evan对这个问题的评论之后)像这样的优化很少是必要的,除非你特别需要一段快速的代码。首先写下可读性最好、不太可能引起问题的内容,然后在必要时进行优化。

如果有什么是微观优化,那么不值得担心,除非它真的给你带来了问题。谢谢你你的答案是,是的,我只是用c#编写代码。在你的解释中,你告诉我们,如果我们使用itemsCount变量,跟踪该变量会变得更加复杂。我不明白这是什么意思(根据我的理解,每次编译器必须检查变量“itemsCount”,它是否已被修改,甚至未被修改)@罗摩克里希纳-基本上,如果您检查.Count或.Length(数组),编译器可以相信在每次遍历for循环时,i的值永远不能超过列表或数组的边界,因此会进行优化以删除边界检查代码。如果您针对某个任意变量进行检查,则在不采取进一步步骤检查代码逻辑的情况下,它无法做到这一点。因此,即使您的代码完全安全,优化也不是p您的“第一个示例”更容易让编译器检查我是否永远不能超出列表的界限。
int itemsCount = myList.Items.Count;
for(int i=0;i<itemsCount;i++)
{
.....
.....
.....
}