У меня есть несколько глобальных методов, объявленных в открытом классе в моем веб-приложении ASP.NET.
У меня есть привычка объявлять все глобальные методы в открытом классе в следующем формате
public static string MethodName(parameters) { }
Я хочу знать, как это повлияет на точку зрения производительности?
- Какой из них лучше? Статический метод или нестатический метод?
- Причина, почему это лучше?
http://bytes.com/topic/c-sharp/answers/231701-static-vs-non-static-function-performance#post947244:
потому что статические методы используют блокировки для обеспечения безопасности потоков. Всегда внутренне выполнять Monitor.Enter() и Monitor.exit(), чтобы обеспечить Резьбонарезной безопасности.
Пока http://dotnetperls.com/static-method заявляет:
статические методы обычно быстрее запускаются в стеке вызовов, чем методы экземпляра. Есть несколько причин для этого в С# язык программирования. Методы экземпляра фактически используют 'this'указатель экземпляра в качестве первого параметра, поэтому метод экземпляра будет всегда есть накладные расходы. Методы экземпляров также реализуются с помощью инструкция callvirt на промежуточном языке, которая накладывает небольшие накладные расходы. Обратите внимание, что изменение методов на статические методы вряд ли помогут в достижении амбициозных целей в области производительности, но это может помочь немного и, возможно, привести к дальнейшему сокращению.
Я немного запутался, какой из них использовать?