2013-04-12 21 views
-3

這兩個語句之間是否存在任何性能差異?性能IEnumerable <T> .ToList()。ForEach()over循環

IEnumerable<T>.ToList().ForEach(x => Console.WriteLine(x)); 

foreach (var obj in IEnumerable<T>) 
    Console.WriteLine(obj) 
+4

你有一個編譯器並可以訪問'Stopwatch'類 - 爲什麼不自己測試它? – Oded

+0

是的,因爲你不必創建一個列表實例foreach over IEnumerable 應該更快。 – MarcinJuraszek

+0

Arran,它不是重複的,因爲我的對象是一個IEnumerable,我必須先創建一個列表。 –

回答

3

在第一個例子,你會

  1. 通過創建列表,通過新的列表枚舉源
  2. 枚舉,並呼籲Console.WriteLine爲每個元素。

在第二個例子中,將

  1. 通過源枚舉和呼叫Console.WriteLine每個元素。

有兩種表現penalities到第一在第二:

  • 創造新的List對象
  • 雙重枚舉的:在原始源,然後在列表
+0

Downvoter:關心分享爲什麼? – AlexFoxGill