0

我有一个名为 myData 的列表,我想将特定方法 (someFunction) 应用于列表中的每个元素。通过对象的构造函数调用方法是否比为特定对象实例化多次调用同一方法慢?

换句话说,是这样的:

for(int i = 0; i < myData.Count; i++)
    myClass someObject = new myClass(myData[i]);

比这慢:

myClass someObject = new myClass();
for(int i = 0; i < myData.Count; i++)
    someObject.someFunction(myData[i]);

?

如果是这样,慢多少?

4

3 回答 3

1

前一种方法可能会导致您的流程工作集显着增加。它还可能会给 Windows 带来内存压力,导致其他应用程序被换出到磁盘。

此外,它会给 CLR 垃圾收集器带来很大压力,因为您创建的每个新对象都会被跟踪以进行收集。

它会慢多少很大程度上取决于您正在创建的对象的大小和数量。

于 2010-06-14T23:18:32.307 回答
1

你可以让它更快,如果你使用静态方法,请使用 Visual Studio 2010 中的 Code Analisys,如果某些方法是静态的候选方法,它会警告你。

于 2010-06-14T23:57:17.637 回答
0

从性能的角度来看,第二个代码块很可能会更快,因为它没有对象实例化和垃圾收集的额外开销。

于 2010-06-14T23:18:12.510 回答