C# 环路中的性能差异

C# 环路中的性能差异,c#,performance,C#,Performance,可能重复: 当我编写类似这样的示例时,是否存在任何(或任何显著的)性能差异(考虑从DB将数十行或数十万行加载到Foo对象集合中): 还是这个 ... while(reader.Read()) { Foo myFoo = new Foo(); myFoo.SomeProperty = reader.GetValue(0); ... fooCollection.Add(myFoo); } 在这两个代码段中的每个循环迭代中,您都在创建一个新的Foo实例,所以我不希

可能重复:

当我编写类似这样的示例时,是否存在任何(或任何显著的)性能差异(考虑从DB将数十行或数十万行加载到Foo对象集合中):

还是这个

...

while(reader.Read())
{
    Foo myFoo = new Foo();
    myFoo.SomeProperty = reader.GetValue(0);
    ...
    fooCollection.Add(myFoo);
}

在这两个代码段中的每个循环迭代中,您都在创建一个新的Foo实例,所以我不希望看到有什么不同

不过,您应该使用eqatec profiler之类的工具来评测代码:


您在两个代码段的循环的每次迭代中都创建了一个新的Foo实例,所以我不希望看到有什么不同

不过,您应该使用eqatec profiler之类的工具来评测代码:


实际上,编译器将在每个实例中生成相同的IL


参见类似的问题和。

实际上,编译器将在每个实例中生成相同的IL


请参阅类似的问题和。

Duplicate-Chrisf,是的,它是重复的,但不是明显的。唯一确定的方法是编写一些代码并计时。Duplicate-Chrisf,是的,它是重复的,但不是明显的。唯一确定的方法是编写一些代码并计时。
...

while(reader.Read())
{
    Foo myFoo = new Foo();
    myFoo.SomeProperty = reader.GetValue(0);
    ...
    fooCollection.Add(myFoo);
}