栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

LINQ方法的运行时复杂度(Big-O)有什么保证?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

LINQ方法的运行时复杂度(Big-O)有什么保证?

有非常少的保证,但是有一些优化:

  • 使用索引访问扩展方法,比如

    ElementAt
    Skip
    Last
    或者
    LastOrDefault
    ,将检查底层式工具与否
    IList<T>
    ,让你得到O(N)的O(1)访问来代替。

  • Count
    方法检查
    ICollection
    实现,以便此操作为O(1)而不是O(N)。

  • Distinct
    GroupBy
    Join
    ,我相信也设置汇总的方法(
    Union
    Intersect
    Except
    )使用散列,所以他们应该是接近O(N),而不是O(N²)。

  • Contains
    检查
    ICollection
    实现,因此如果基础集合也是O(1),例如a ,则 可能 为O(1)
    HashSet<T>
    ,但这取决于实际的数据结构,因此不能保证。哈希集会覆盖该
    Contains
    方法,这就是为什么它们是O(1)的原因。

  • OrderBy
    方法使用稳定的快速排序,因此它们是O(N log N)个平均情况。

我认为这涵盖了大多数(如果不是全部)内置扩展方法。确实很少有性能保证。Linq本身将尝试利用高效的数据结构,但是编写潜在的低效率代码不是免费的通行证。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/465435.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号