我聽說List<T>.AddRange(IEnumerable<T>)
快於new List<T>(IEnumerable<T>)
。查看反射器後,我無法分辨爲什麼廣告一旦創建測試應用程序確實我看到它更快。爲什麼列表<T> .AddRange(IEnumerable的<T>)高於新錶快<T>(IEnumerable的<T>)
有沒有人有一個想法,爲什麼?
我聽說List<T>.AddRange(IEnumerable<T>)
快於new List<T>(IEnumerable<T>)
。查看反射器後,我無法分辨爲什麼廣告一旦創建測試應用程序確實我看到它更快。爲什麼列表<T> .AddRange(IEnumerable的<T>)高於新錶快<T>(IEnumerable的<T>)
有沒有人有一個想法,爲什麼?
對不起,我無法證實你的假設。 AddRange總是比構造函數變體慢。
我爲它的一些測試代碼:
一個)var list = new List<T>(enumerable);
快於
B)var list = new List<T>(); list.AddRange(enumerable);
測試了不同IEnumerables
列表:新:32ms addrange:47ms
的LinkedList:新:58ms的AddRange:99ms
HashSet的:新:56MS的AddRange:98ms
隊列:新:271ms的AddRange:516ms
我相信這個開銷可以忽略不計。 –
沒有它沒有。嘗試測試。 – BlueM
這不是OP要求的。由於您將'List
你能粘貼示例代碼?他們的表現會因你通過的物品而有所不同。 –
「我聽說......」 - 不要相信你所聽到的一切,特別是關於表演的一攬子表述。 – Joe
@Joe它來自知道他的東西的人...... –