我正在C#中創建我的第一個網站。泛型方法vs非泛型方法 - 是否有任何性能優勢?
我注意到我在intellisense中得到了一些重複的擴展方法。進一步的調查是這兩個:
public static void ThrowNullOrEmpty<T>(this IEnumerable<T> obj, string param)
{
}
public static void ThrowNullOrEmpty(this string obj, string param)
{
}
看來字符串也可以是IEnumerable<char>
。
從編譯的基礎我可以刪除字符串變體,但是有任何性能問題或我應該知道的任何其他內容?
UPDATE
剛測試了1百萬次以上的迭代。
public bool IsNullOrEmpty1(string @this)
{
return String.IsNullOrEmpty(@this);
}
VS
public bool IsNullOrEmpty2<T>(IEnumerable<T> @this)
{
return @this == null || [email protected]();
}
IsNullOrEmpty1主頻自己的計算機,IsNullOrEmpty2(125 - 250毫秒)12毫秒,所以10 - 慢20倍。
在現實世界中,我每個月的迭代次數都非常高,達到每分鐘1380次(每天12小時)。兩者的結果都不到1ms。
因此,刪除IsNullOrEmpty1並不是最好的方法,但它也不是網站殺手。
據我所知它是語法糖,編譯器爲您的泛型生成一個新類型。在運行時你不應該注意到一個區別。 – BenCr
這麼容易測量,但除非它是一個問題,爲什麼要麻煩? – spender