首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >for in for优化

for in for优化
EN

Stack Overflow用户
提问于 2012-03-18 08:56:52
回答 1查看 169关注 0票数 2

我正在尝试优化这段代码:

代码语言:javascript
复制
   foreach (string id in ids)
   {
     MyClass x = myDictionary[id];
     foreach (var map in Maps)
     {
       if ( x.id == map.SourceId || x.id == map.DestionationId)
       {
           //add id to a hashset
       }
     }
   }

如果ids.count是1600,Maps.Count是300000,处理大约需要10分钟。

我尝试过LINQ,但效果也好不到哪里去:

代码语言:javascript
复制
   var allIds = Maps.select(map => map.SourceId).Union(Maps.select(map => map.DestinationID)).Distinct();
   var toAdd = from id in Ids
               join mapId in AllIds on id equals mapid
               select id;
  //create hashset based on  toAdd collection.

有没有人能给我一个更好的解决方案,如果可能的话,解释一下为什么linq在这种情况下不是更快?

谢谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-03-18 09:03:19

你有O(countIds * countMaps)的复杂度,如果你把所有的地图放在2个字典中,按源和目的地索引,你会得到O(countIds + countMaps)。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9755141

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档