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