HTML5技术

LINQ中那些你所不知道的秘密 - 我们的阳光很盐(2)

字号+ 作者:H5之家 来源:博客园 2015-11-27 16:12 我要评论( )

随机构造一个容量为 10万的 ListT集合和 Dictionarystring,T集合,产生一个随机数作为检索的 频率 ,也就是在这 10万个对象中要检索的次数(这里产生了 1639个检索对象),执行结果让人大吃一惊,耗时相差尽然如此

  随机构造一个容量为10万的List<T>集合和Dictionary<string,T>集合,产生一个随机数作为检索的“频率”,也就是在这10万个对象中要检索的次数(这里产生了1639个检索对象),执行结果让人大吃一惊,耗时相差尽然如此之大。

 

  从测试结果来看,两者的效率天壤之别,而且随着检索集合的容量大小和检索频率成”正比”趋势: 使用LINQ Where检索,执行三次平均检索1600多次13秒左右;而Dictionary执行三次检索1600多次也不超过10ms! LINQ to Object的Where的查询不像数据库可以靠索引加速检索,当查询元素的对象很多,并且查询检索非常频繁时,可以考虑使用Dictionary<string, T>等做法取代Where条件检索,避免不必要的性能损失。

  结论:依赖LINQ的Where查询在大量资料库中频繁检索数据是,很容易形成效率瓶颈。遇到这样的需求,可通过ToDictionary()简单转换成Dictionary,可以获得大幅度的性能提升。

  鄙人能力有限,以上测试纯属个人知识点查缺补漏应用,不敢强加应用场景,以免误人子弟,若有不妥或者错误的地方,还望各位大神斧正。

 

 

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

相关文章
  • 这些年,我身边的那些人和事 - 左潇龙

    这些年,我身边的那些人和事 - 左潇龙

    2017-02-20 12:01

  • Microsoft Edge与Google Chrome那些不同的举止 - fyter

    Microsoft Edge与Google Chrome那些不同的举止 - fyter

    2017-01-16 12:00

  • sql的那些事(一) - Akon_Coder

    sql的那些事(一) - Akon_Coder

    2017-01-01 12:00

  • 救火队员的那些事(2) - CC

    救火队员的那些事(2) - CC

    2016-09-07 17:00

网友点评
>