я пытаюсь оптимизировать этот код:для в оптимизации
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 составляет 300 000 в занимает около 10 минут, чтобы обработать.
Я пытался LINQ, но результаты не намного лучше:
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 в данном случае не намного быстрее?
Благодаря
Возможно, вы захотите опубликовать это на http://codereview.stackexchange.com –
Что такое Maps? –