Преобразование IENumerable в словарь для производительности?

Я недавно видел новую тенденцию в моей фирме, где мы изменяем iEnumerable в словарь по простому преобразованию Linq следующим образом:

enumerable.ToDictionary(x=>x);

мы в основном в конечном итоге делаем это, когда операция В коллекции есть содержит / доступ и, очевидно, что словарь имеет лучшую производительность в таких случаях.

Но я понимаю, что преобразование перечисленного словаря имеет свои собственные затраты, и мне интересно, в какой момент он начинает разбиваться - даже (если он это делает), то есть производительность IENumerable Содержит / доступ равен для того, чтобы подразделение + Access / содержит.

ОК, я мог бы добавить, что нет баз данных. Доступ к перечислимому может быть создан из запроса базы данных и вот и перечислима может быть отредактирована после этого ..

Также было бы интересно узнать, как хранить тип данных Ключ влияет на производительность?

поиск может быть в 2-5 раз вообще, но иногда может быть один. Но я видел такие вещи, как Для перечисленного перечисления:

 var element=Enumerable.SingleorDefault(x=>x.Id);
 //do something if element is null or return

для словаря:

 if(dictionary.ContainsKey(x))
 //do something if false else  return

Это уже некоторое время прогуливается.

6
задан Baz1nga 7 September 2011 в 08:40
поделиться