Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arrays .net 5在大型迭代中字典与列表的性能_Arrays_List_Performance_Dictionary_.net 5 - Fatal编程技术网

Arrays .net 5在大型迭代中字典与列表的性能

Arrays .net 5在大型迭代中字典与列表的性能,arrays,list,performance,dictionary,.net-5,Arrays,List,Performance,Dictionary,.net 5,我有一个可以处理80000个项目和一个字典的算法,但是性能不是很好,所以我正在寻找一种方法来优化它,也许我使用了错误的列表类型 在这个场景中,我有80000个地图参考,需要根据它们的“接近程度”进行分组。如果它们在X距离内,则它们被添加到组中,或者它们是一个新的参考点 目前,我使用的字典的键=映射引用,值=接近的引用列表(在X距离内) 对于80000个对象,这需要大量的迭代,并且需要几分钟才能完成 你有这样的想法吗 伪代码 dictionary (reference, list<refer

我有一个可以处理80000个项目和一个字典的算法,但是性能不是很好,所以我正在寻找一种方法来优化它,也许我使用了错误的列表类型

在这个场景中,我有80000个地图参考,需要根据它们的“接近程度”进行分组。如果它们在X距离内,则它们被添加到组中,或者它们是一个新的参考点

目前,我使用的字典的键=映射引用,值=接近的引用列表(在X距离内)

对于80000个对象,这需要大量的迭代,并且需要几分钟才能完成

你有这样的想法吗

伪代码

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
做什么?您可以使用例如库