.net里 5万的数据量 哪个键值对集合类的取数据性能最好? 参赛选手有 Hashtable ,DictionaryBase 还有其它选手的话请大家推荐。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 >>> 取数据性能最好Hashtable or SortedList一个是哈希算法一个是二分算法 速老大也在啊。现在参赛选手有3个了。Hashtable 1分,DictionaryBase ,SortedList 1分 Hashtable 3分,SortedList 1分,DictionaryBase 会试的,想先看看大家感觉哪个性能好。Hashtable 4分,SortedList 1分,DictionaryBase Hashtable,SortedList ,ArrayList 我感觉应该是派生自DictionaryBase的自定义强类型集合类性能最好把至少不用类型转换 Hashtable 5分,SortedList 2分,DictionaryBase 1分,ArrayList 不是键值对集合,没有参赛资格。 测试代码 循环遍历一遍:foreach (object obj in hash.Keys){ KeyWord k = hash[obj] as KeyWord;}foreach (object obj in sort.Keys){ KeyWord k = sort[obj] as KeyWord;}foreach (string obj in dic.Keys){ KeyWord k = dic[obj];}5万数据的结果:遍历hash0.031遍历sortList0.141遍历dic0.016public class keyDic : Dictionary<string, KeyWord>{} 胜出。 当然,如果非得键值对的集合,那还是Hashtable 242065 数据时,遍历一遍:遍历hash0.25遍历sortList0.984遍历dic0.125 Hashtable好一点吧,毕竟Hash算法的复杂度最低吧 .NET 2.0中...Dictionary<>...是Hashtable的泛型..比Hashtable更快.在System.Collections.Generic 命名空间详细信息请参考MSDN2005ms-help://MS.MSDNQTR.v80.chs/MS.MSDN.v80/MS.NETDEVFX.v20.chs/cpref2/html/N_System_Collections_Generic.htm 楼上意思 Dictionary<>比Hashtable快一倍,就因为不用类型转换了? 同意yeerh,Dictionary<>限定了类型,免去对象重新封装带来的性能下降,尤其是数据量大的情况更是明显。虽说不能像hashtable那样可以扔一些杂七杂八的东西进去 Dictionary<string, KeyWord>{} 不用类型转换比hashtable好用 问:把 KeyWord k = hash[obj] as KeyWord;换成 object k = hash[obj] ;遍历一遍会不会缩短时间? 如果是查找的需求,hashtable类型转换的次数该是1,而不是n,楼主hashtable的测试在n次拆箱中消耗了多数的时间,待俺回头复习一下hash,和二分算法再过来看看, 我200多万数据都用的Dictionary<>完全没有问题的..... to yeerh(边城浪) :强啊。200万。那我就放心用 Dictionary<> 了。 索引的话HashTable最快,不索引则Array是最快的。固定缓冲区应该更快。如果你要把5万条数据全部类型转换一次,那么Dictionary<>更快。 把 KeyWord k = hash[obj] as KeyWord;换成 object k = hash[obj] ;遍历一遍会不会缩短时间?两句的测试结果是一样的。没有因为类型转换而有什么消耗。 Hashtable表。学过数据结构的应该都知道这个的好处。哈个人意见 感兴趣的再来讨论下。我都测出是Dictionary<>快了,还是这么多人说Hashtable快。 如何改变notifyIcon托盘图标的大小? 怎么校验一个数为大于0的整形? 关于数据转移问题..急啊..求求各位帮忙.. 有什么好办法分离字符串中的单个汉字 和 一个单词 和 标点符号 (新手)计时器等于每天的10:00触发事件,怎么写? ???问大家关于视频音频传输的问题 如果非管理员进入某个页面浏览,那我想让页面的链接变成不可点击该怎么写代码?(C#) .net 0xc000007b 初始化失败...郁闷,救我啊.. 求购VS.Net开发的OA软件,UP有分!谢谢 怎样打开一个Windows的目录?? 关于《程序员》这本杂志的想法,进来走走哦! 连接数据库问题
Hashtable or SortedList
一个是哈希算法一个是二分算法
至少不用类型转换
foreach (object obj in hash.Keys)
{
KeyWord k = hash[obj] as KeyWord;
}foreach (object obj in sort.Keys)
{
KeyWord k = sort[obj] as KeyWord;
}foreach (string obj in dic.Keys)
{
KeyWord k = dic[obj];
}5万数据的结果:遍历hash
0.031
遍历sortList
0.141
遍历dic
0.016public class keyDic : Dictionary<string, KeyWord>{} 胜出。
0.25
遍历sortList
0.984
遍历dic
0.125
Dictionary<>...是Hashtable的泛型..比Hashtable更快.在System.Collections.Generic 命名空间
详细信息请参考MSDN2005
ms-help://MS.MSDNQTR.v80.chs/MS.MSDN.v80/MS.NETDEVFX.v20.chs/cpref2/html/N_System_Collections_Generic.htm
不用类型转换比hashtable好用
换成 object k = hash[obj] ;遍历一遍会不会缩短时间?
完全没有问题的.....
不索引则Array是最快的。固定缓冲区应该更快。如果你要把5万条数据全部类型转换一次,那么Dictionary<>更快。
换成 object k = hash[obj] ;遍历一遍会不会缩短时间?两句的测试结果是一样的。没有因为类型转换而有什么消耗。
表。学过数据结构的应该都知道这个的好处。哈
个人意见