Arrays .net 5在大型迭代中字典与列表的性能
我有一个可以处理80000个项目和一个字典的算法,但是性能不是很好,所以我正在寻找一种方法来优化它,也许我使用了错误的列表类型 在这个场景中,我有80000个地图参考,需要根据它们的“接近程度”进行分组。如果它们在X距离内,则它们被添加到组中,或者它们是一个新的参考点 目前,我使用的字典的键=映射引用,值=接近的引用列表(在X距离内) 对于80000个对象,这需要大量的迭代,并且需要几分钟才能完成 你有这样的想法吗 伪代码Arrays .net 5在大型迭代中字典与列表的性能,arrays,list,performance,dictionary,.net-5,Arrays,List,Performance,Dictionary,.net 5,我有一个可以处理80000个项目和一个字典的算法,但是性能不是很好,所以我正在寻找一种方法来优化它,也许我使用了错误的列表类型 在这个场景中,我有80000个地图参考,需要根据它们的“接近程度”进行分组。如果它们在X距离内,则它们被添加到组中,或者它们是一个新的参考点 目前,我使用的字典的键=映射引用,值=接近的引用列表(在X距离内) 对于80000个对象,这需要大量的迭代,并且需要几分钟才能完成 你有这样的想法吗 伪代码 dictionary (reference, list<refer
dictionary (reference, list<references>) referenceGroup = new...
foreach (reference in references) {
foreach (group in referenceGroup) {
if (reference.distancefrom(group.key) <= X) {
referenceGroup.value.add(reference)
break
}
}
if (neverAddedToGroup) {
referenceGroup.add(reference, reference)
}
}
dictionary(reference,list)referenceGroup=new。。。
foreach(参考文献中的参考文献){
foreach(引用组中的组){
if(参考距离(组键)如果你想迭代所有项,为什么要使用字典呢?字典的目的是通过基于散列值将项存储在存储桶中来加速查找。根据定义,迭代项的速度较慢,这不是我理解的原因。但是,我使用字典的索引查找来首先检测是否存在精确的映射reference.if(dictionary.containsKey(reference))=我们有一个精确的匹配项。通过移动到普通列表,我必须扫描每个条目。您可以同时使用这两种类型。如果您存储引用类型,列表或字典只存储对对象的引用,而不是对象本身。您实际想做什么?distanceFrom
做什么?您可以使用例如库