【发布时间】:2011-03-02 07:07:45
【问题描述】:
我的 ASP.NET Web 应用程序的公共类中声明的全局方法很少。
我习惯在公共类中声明所有全局方法,格式如下
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 指令,它强加了一个 轻微的开销。请注意,将您的方法更改为静态 方法不太可能对雄心勃勃的绩效目标有很大帮助,但是 它可以提供一点帮助,并可能导致进一步减少。
我有点困惑该使用哪一个?
【问题讨论】:
-
您是否阅读到第一个链接的末尾?很明显,即使在线程中,关于自动锁定的断言也是错误的。
标签: c# .net performance static-methods