C#中如何优化列表遍历速度

一个数据库表(id,name,…)中有10万条记录,查找name=’guoguo‘可能需要很长时间,但是如果对name建立了索引,那么再用name=’guoguo‘来查询将变得非常快(有多快?自己可以去试试)。

相应的,有时候我们的代码里面会用到List<T>,Array来存储一组数据。我们以一个例子来说明一下。

定义数据类型: 

    public class UserInfo
    {
        public int ID { get; set; }
        public string Name { get; set; }
        public int Age { get; set; }
    }

示例代码有个前提:name不会重复。从List中按照name找到对应的UserInfo可以用以下代码:

        List<UserInfo> _userinfos;

        public UserInfo GetUserInfoByName(string name)

        {

            for (int i = 0; i < _userinfos.Count; i++)

            {

                UserInfo ui = _userinfos[i];

                if (ui.Name == name)

                {

                    return ui;

                }

            }

            return null;

        }

 

        public UserInfo GetUserInfoByName_Find(string name)

        {

            return _userinfos.Find((temp) =>

            {

                return temp.Name == name;

            });

        }

两个方法其实都是使用遍历列表的方式去比较、查找;我做了实验,如果列表中有10万条记录,分别执行“查找第5万个元素”1000遍的耗时为:

</

GetUserInfoByName

1877毫秒

GetUserInfoByName_Find

2290毫秒

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值