Вызов метода для объекта несколько раз по сравнению с созданием объекта несколько раз - PullRequest
0 голосов
/ 15 июня 2010

У меня есть список 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]);

Если так, насколько медленнее?

Ответы [ 3 ]

1 голос
/ 15 июня 2010

Первый подход может привести к значительному увеличению рабочего набора вашего процесса. Это также может привести к нехватке памяти в Windows, в результате чего другие приложения будут выгружены на диск.

Кроме того, это окажет большое давление на сборщик мусора CLR, поскольку каждый новый создаваемый вами объект будет отслеживаться для сбора.

Насколько медленнее это будет, во многом зависит от размера и количества создаваемых вами объектов.

1 голос
/ 15 июня 2010

Вы можете сделать это еще быстрее, если вы используете статический метод, пожалуйста, используйте Code Analisys из Visual Studio 2010, он предупредит вас, если какой-либо метод является кандидатом на статический.

0 голосов
/ 15 июня 2010

С точки зрения производительности, второй блок кода, скорее всего, будет быстрее, так как не требует дополнительных затрат на создание экземпляров объекта и сборку мусора.

...