Код: Выделить всё
ConcurrentDictionary.ValuesЗапуск инструмента использования ЦП VSDiagnostics. Часть информации, которую он рекомендовал для моего настольного приложения, заключалась в том, что также появлялся вызов .Values. часто. В частности, сообщение было

Для тех, кто не умеет читать изображение (и/или не знают о разделе «Основная информация» в Diagsession). Есть две колонки. В первом столбце указано «Проблема»:
Код: Выделить всё
'System.Collections.Concurrent.ConcurrentDictionary.get_Values()' exceeded
CPU Threshold of 0.01%.
Код: Выделить всё
0.05% of CPU time is spent in System.Collections.Concurrent.ConcurrentDictionary.get_Values(). ConcurrentDictionary.Values takes a lock and makes a copy. Enumerate KeyValuePairs for efficient access to values and avoid using inside loops
Так что мне интересно, заменю ли я его циклом через KeyValuePair< /code> и вызов .Value действительно ли это улучшит загрузку ЦП или просто скроет проблему, поскольку теперь это будет не один вызов, который занимает все время, а несколько небольших, занимающих один и тот же объем времени, но поскольку все они будут меньше, это не будет отмечено?
Две версии, которые сейчас у меня под рукой,
Код: Выделить всё
conDict.Values.Where(filter)Код: Выделить всё
condict.Where(x=>filter(x.Value))
Подробнее здесь: https://stackoverflow.com/questions/785 ... valuepairs