Csharp/C#教程:Linq ToList / ToArray / ToDictionary性能分享


Linq ToList / ToArray / ToDictionary性能

好吧,我遇到很多情况,IEnumerable是不够的。 但是我不确定上述方法调用的性能。

我真正想问的是:

是ToList / ToArray的性能:

  1. 一个O(n)操作,它将IEnumerable复制到一个新的数组/列表?
  2. 如果我在列表上调用linq扩展方法,如果我调用ToList则它具有O(1)性能,如果调用ToArray则具有O(n)(如果我的原始列表是数组则相反)?

  3. 一些魔法发生了,性能是O(1)?

字典可能是O(n),对吧?

ToList / ToArray的性能是否将IEnumerable复制到新数组/列表的O(n)操作?

是。 ToList稍微高效一些,因为它不需要先将内部缓冲区修剪到合适的长度。

如果我在列表上调用linq扩展方法,如果我调用ToList则它具有O(1)性能,如果调用ToArray则具有O(n)(如果我的原始列表是数组则相反)?

不。对于这两个呼叫,始终会创建一个集合; 这是原始系列的浅层副本。 在任何ICollection上调用ToListToArray比在没有实现ICollection的简单IEnumerable上调用更高效,就像已知长度的集合一样。 (这在执行时检测到;您不必担心编译时类型。)

字典可能是O(n),对吧?

假设散列是合理的,那就是O(N),是的。 基本上它会以您可能期望的方式创建一个新的字典。

您可能想阅读我的Edulinq博客系列中的相应post:

上述就是C#学习教程:Linq ToList / ToArray / ToDictionary性能分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!

本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

ctvol管理联系方式QQ:251552304

本文章地址:https://www.ctvol.com/cdevelopment/1000201.html

(0)
上一篇 2021年12月27日
下一篇 2021年12月27日

精彩推荐