Dictionary和数组查找效率对比

    今天想到前两天的通用数据库访问实体类中,想到了赋值和取值的效率,于是今天就写了个小程序测试了额一下

测试程序代码:

int Count = 1000000;
            string findName = "Field" + (Count-1).ToString();
            DataEntity[] _ArrTestStr = new DataEntity[Count];
            Dictionary<string, DataEntity> _DictionaryTest = new Dictionary<string, DataEntity>();
            StringBuilder content = new StringBuilder();
            DateTime beginDateTime = DateTime.Now;
            //对测试数据进行填充
            for (int i = 0; i < Count; i++)
            {
                DataEntity de = new DataEntity();
                de.Value = i.ToString();
                de.Field = "Field" + de.Value;
                _ArrTestStr[i] = de;
            }
            DateTime endDateTime = DateTime.Now;
            content.Append(" 数组赋值开始时间:").Append(beginDateTime.Ticks).AppendLine(beginDateTime.ToString("yyyy-MM-dd HH:mm:ss fff"))
                 .Append(" 数组赋值结束时间:").Append(beginDateTime.Ticks).AppendLine(beginDateTime.ToString("yyyy-MM-dd HH:mm:ss fff"));


            beginDateTime = DateTime.Now;
            for (int i = 0; i < Count; i++)
            {
                DataEntity de = new DataEntity();
                de.Value = i.ToString();
                de.Field = "Field" + de.Value;
                _DictionaryTest.Add(de.Field, de);
            }
            endDateTime = DateTime.Now;
            content.Append(" Dictionary赋值开始时间:").Append(beginDateTime.Ticks).AppendLine(beginDateTime.ToString("yyyy-MM-dd HH:mm:ss fff"))
                  .Append(" Dictionary赋值结束时间:").Append(beginDateTime.Ticks).AppendLine(beginDateTime.ToString("yyyy-MM-dd HH:mm:ss fff"));


            int index = 0;
            DataEntity NewDE = null;
            beginDateTime = DateTime.Now;
            while (index<Count)
            {
                if (_ArrTestStr[index].Field == findName)
                {
                    NewDE = _ArrTestStr[index];
                    break;
                }
                index++;
            }
            endDateTime = DateTime.Now;
           
            content.Append("数组查找到的值为:").AppendLine(NewDE.Value)
                .Append(" 开始查找时间:").Append(beginDateTime.Ticks).AppendLine(beginDateTime.ToString("yyyy-MM-dd HH:mm:ss fff"))
                 .Append(" 结束查找时间:").Append(beginDateTime.Ticks).AppendLine(beginDateTime.ToString("yyyy-MM-dd HH:mm:ss fff"));


            beginDateTime = DateTime.Now;
            NewDE = _DictionaryTest[findName];
            endDateTime = DateTime.Now;
            content.Append("Dictionary查找到的值为:").AppendLine(NewDE.Value)
               .Append(" 开始查找时间:").Append(beginDateTime.Ticks).AppendLine(beginDateTime.ToString("yyyy-MM-dd HH:mm:ss fff"))
                .Append(" 结束查找时间:").Append(beginDateTime.Ticks).AppendLine(beginDateTime.ToString("yyyy-MM-dd HH:mm:ss fff"));
            textBox1.Text = content.ToString();


程序运行结果:

 数组赋值开始时间:6348196539849141122012-08-30 23:16:38 491
 数组赋值结束时间:6348196539849141122012-08-30 23:16:38 491
 Dictionary赋值开始时间:634819653995374710 2012-08-30 23:16:39 537
 Dictionary赋值结束时间:6348196539953747102012-08-30 23:16:39 537
数组查找到的值为:999999
 开始查找时间:6348196540108655962012-08-30 23:16:41 086
 结束查找时间:6348196540108655962012-08-30 23:16:41 086
Dictionary查找到的值为:999999
 开始查找时间:6348196540112756192012-08-30 23:16:41 127
 结束查找时间:6348196540112756192012-08-30 23:16:41 127

 

 

结论:赋值和查找效率基本上是一样的,循环了10万次

转载于:https://www.cnblogs.com/shunhe316/archive/2012/08/30/2664667.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值