[英]Performance Difference between using ToList() vs. new List(IEnumerable<T>)
我很好奇在IEnumerable上使用ToList()與只調用List Constructor'List(IEnumerable)'對性能的影響。
例:
int[] testArray = new int[10];
var list = testArray.ToList();
與
int[] testArray = new int[10];
var list = new List<int>(testArray);
使用其中一個是否有任何性能影響或最佳實踐?
我已經接管了一個應用程序,我正在調用的控制器方法返回一個數組,但我所擁有的視圖需要一個List。
像其他人已經說過的那樣,大多數時候最好的做法是做一些更具可讀性的東西(我認為這意味着使用ToList()
)。 兩種方式完全相同,所以你應該期望它們的性能非常相似。
如果分析顯示這是您需要優化的代碼,那么您應該嘗試兩種方式並測量哪一種更快。
查看源代碼(在.Net基本庫的情況下,您可以查看Reference Source或使用反編譯器)也可能有所幫助。 ToList
看起來像這樣:
public static List<TSource> ToList<TSource>(this IEnumerable<TSource> source) {
if (source == null) throw Error.ArgumentNull("source");
return new List<TSource>(source);
}
因此,它的性能應該與new List
相同,加上一個null
檢查和一個方法調用。 但兩種增加都可能會被優化掉。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.