说500个元素会更快.
或者检索元素的数据结构/集合是什么?
ListmyObjs = new List (); int i = myObjs.BinarySearch(myObjsToFind); MyObj obj = myObjs[i];
要么
DictionarymyObjss = new Dictionary (); MyObj value; myObjss.TryGetValue(myObjsToFind, out value);
Jon Skeet.. 9
我假设在您的真实代码中,您实际上填充了 myObjs - 并对其进行排序.
你刚试过吗?这取决于几个因素:
您是否因任何其他原因需要对列表进行排序?
MyObj.CompareTo(MyObj)的速度有多快?
MyObj.GetHashCode()的速度有多快?
MyObj.Equals()的速度有多快?
你有多大可能得到哈希冲突?
它真的对你有重大影响吗?
在二进制搜索案例中,对单个调用GetHashCode和在字典情况下对Equals进行一些调用(取决于散列冲突),需要进行大约8或9次比较.然后是两种情况下涉及的内在计算(访问数组等).
这真的是你的瓶颈吗?
我预计词典是快一点,在500点的元素,但不是很快得多.随着收集的增长,差异将明显增加.
我假设在您的真实代码中,您实际上填充了 myObjs - 并对其进行排序.
你刚试过吗?这取决于几个因素:
您是否因任何其他原因需要对列表进行排序?
MyObj.CompareTo(MyObj)的速度有多快?
MyObj.GetHashCode()的速度有多快?
MyObj.Equals()的速度有多快?
你有多大可能得到哈希冲突?
它真的对你有重大影响吗?
在二进制搜索案例中,对单个调用GetHashCode和在字典情况下对Equals进行一些调用(取决于散列冲突),需要进行大约8或9次比较.然后是两种情况下涉及的内在计算(访问数组等).
这真的是你的瓶颈吗?
我预计词典是快一点,在500点的元素,但不是很快得多.随着收集的增长,差异将明显增加.