我在我的ASP.NET Web應用程序的公共類中聲明瞭幾個全局方法。Static Vs實例方法性能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指令實現,這會導致輕微的開銷。請注意,將您的方法更改爲靜態方法對於雄心勃勃的性能目標不太可能有幫助,但 它可以提供一點幫助,並可能導致進一步降低。
我很困惑哪一個使用?
您是否閱讀過第一個鏈接的結尾?即使在線程內部,關於自動鎖定的斷言也是錯誤的。 – 2010-06-10 17:24:43