Только некоторые измерения в .NET 4 для целочисленных ключей.
Это не совсем ответ на ваш вопрос, но ради полноты я измерил поведение различных классов, полезных для приращения целых чисел, на основе целочисленных ключей: простые Array
, Dictionary
(подход @ Ani), Dictionary
(простой подход), * 1006 * (подход @ Ани) и ConcurrentDictionary.TryAddOrUpdate
.
Вот результаты, скорректированные на 2,5 нс для переноса с классами вместо прямого использования:
Array 2.5 ns/inc
Dictionary (@Ani) 27.5 ns/inc
Dictionary (Simple) 37.4 ns/inc
SortedDictionary 192.5 ns/inc
ConcurrentDictionary 79.7 ns/inc
И это код .
Обратите внимание, что ConcurrentDictionary.TryAddOrUpdate
в три раза медленнее, чем установщик TryGetValue
+ индексатора Dictionary
. И последний в десять раз медленнее, чем массив.
Таким образом, я бы использовал массив, если бы знал, что диапазон ключей невелик, а в противном случае комбинированный подход.