У меня есть несколько глобальных методов, объявленных в открытом классе в моем веб-приложении ASP.NET.Static Vs Instance Method Performance C#
У меня есть привычка объявить все глобальные методы в общественном классе в следующем формате
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 состояния:
статические методы, как правило, быстрее, чтобы вызвать в стеке вызовов, чем методы экземпляра. Для этого есть несколько причин для этого на языке программирования C# . Методы экземпляров фактически используют указатель экземпляра «this» в качестве первого параметра, поэтому метод экземпляра будет всегда иметь эти служебные данные. Методы экземпляров также реализованы с помощью командыинструкции callvirt на промежуточном языке, которая накладывает небольшие накладные расходы . Обратите внимание, что смена методов на статические методы вряд ли поможет в достижении амбициозных целей производительности, но может немного помочь и, возможно, привести к дальнейшим сокращениям.
Я немного смущен, какой из них использовать?
Вы прочитали до конца этой первой ссылки? Внутри потока становится совершенно ясным, что утверждение об автоматической блокировке ложно. –