码迷,mamicode.com
首页 > Windows程序 > 详细

关于C#中 List<T> 和 Dictionary<TKey, TValue>组织数据效率和查询数据效率的比较。

时间:2016-05-12 12:10:51      阅读:1834      评论:0      收藏:0      [点我收藏+]

标签:


最近我接受到一个工作任务,大致是做个通用的数据接口,供业务人员调用,要求返回前台所有的字段中文说明和字段对应的单位说明。

   

        于是乎,我就定义了一个结构体:

    

        public class FieldInfo
        {
            public string FieldCode = string.Empty;//数据库字段
            public string FieldName = string.Empty;//字段对应的中文说明
            public string FieldUnit = string.Empty;//字段对应的单位说明
        }

    

      然后,在定义一个List

      List<FileInfo> FileInfoList = new List<FileInfo>();


      把所有的字段,中文说明,单位添加进去,最后更具查询的结果去遍历这个List,获取对应的中文说明和单位说明。


     某领导问我功能实现了吗?答:实现了,某领导问这么做了,把上面的叙述了一遍。

    

     某领导开始发飙,你这么可以这样写,效率多低下啊,你应该用Dictionary<TKey, TValue>去做,这个查询效率高。


    我当时心里就有抵触,你这样说话有依据吗?


    可是没有办法,他是领导我先改,改好了我去测试测试到底哪个效率高。


    下面说说实验的结构啊,在数据量少的情况下几乎看不出差异,到百万级数据才微微有些差异,于是我把数据加大到千万(亿的时候报内存溢出,不好测试了)


    测试结果如下:

 

    List<T> 添加千万数据大约需要3秒,而Dictionary<TKey, TValue> 大约需要9秒。


   查询部分 List<T>用的是遍历查询,查询最中间的那个数据大约需要50ms

    Dictionary<TKey, TValue> 用的是 Dictionary.ContainsKey(TKey) 大约为10ms


   特别说明一下,在查询一个不存在的结果的时候 Dictionary表现优异一点 约为 1ms.


   总结:


   1. 技术上:如果使用频率不高,数据量不大,两者无明显查询。如果使用频率巨大,数据量也巨大,Dictionary前期组织数据需要浪费一点时间,可以在后期慢慢弥补回来。

    

   2.某领导,我真的很想问候你的家人,不知道你的结论是怎么的出来的,也不知道我的结论有没有不合适的地方,希望大家指出。

               

               

  


关于C#中 List<T> 和 Dictionary<TKey, TValue>组织数据效率和查询数据效率的比较。

标签:

原文地址:http://blog.csdn.net/jf200614379/article/details/51372179

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!