簡體   English   中英

使用ToList()與新列表(IEnumerable)之間的性能差異 <T> )

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM