我在我的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指令来实现,这会带来轻微的开销。请注意,将您的方法更改为静态方法不太可能对提高性能目标有所帮助,但它可能会稍微有所帮助,并可能导致进一步的减少。
我有点困惑该使用哪个?