一个数据库表(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毫秒 |