我听说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它来自知道他的东西的人...... –