为什么List <t> .AddRange(IEnumerable <t>)比新List <t>(IEnumerable <t>)</t> </t> </t> </t>更快

时间:2012-05-21 09:38:48

标签: c# .net performance list ienumerable

我听说List<T>.AddRange(IEnumerable<T>)new List<T>(IEnumerable<T>)快。在查看反射器后,我无法告诉为什么广告一旦我创建了测试应用程序确实我看到它更快。

有谁知道为什么?

1 个答案:

答案 0 :(得分:1)

抱歉,我无法确认您的假设。 AddRange总是慢于构造函数变体。

我为它制作了一些测试代码:

a)var list = new List<T>(enumerable);

b)var list = new List<T>(); list.AddRange(enumerable);

使用不同的IEnumerables进行测试

  

列表:新:32ms addrange:47ms

     

LinkedList:new:58ms addrange:99ms

     

HashSet:new:56ms addrange:98ms

     

队列:新:271ms addrange:516ms