Есть ли реализация IDictionary с лучшей производительностью по сравнению с BCL?

Я ищу реализацию IDictionary с лучшей производительностью стандартной BCL.

Я ищу что-то с постоянным временем поиска, которое действительно хорошо работает с большим количеством элементов (> 10K) и является более дружественным к GC.

PS: Нет, я не могу написать один сам :)

10.12.2008 17:06:08
Как управляемый тип может быть более или менее «дружественным GC»? !! GC работает независимо от реализации объекта; скорее это зависит от ссылок, которые вы делаете на объект.
ljs 10.12.2008 17:29:19
3 ОТВЕТА
РЕШЕНИЕ

Я не смог сравнительно оценить реализацию, но альтернативный - и более всесторонний - выбор общих классов коллекций доступен в Университете Копенгагена здесь:

http://www.itu.dk/research/c5/

Они предлагают ряд общих реализаций Словаря с различными решениями для поддержки (Деревья, HashTables и т. Д.). Возможно, один из них удовлетворяет вашим потребностям. Производительность была главным фактором в развитии этой библиотеки классов.

Конечно, я бы порекомендовал вам сначала попробовать базовый класс Dictionary BCL, так как это сэкономит ваше время и может вполне соответствовать вашим требованиям к производительности.

2
10.12.2008 17:59:11

Словарь BCL уже работает с амортизированным постоянным временем и может легко обрабатывать 10K элементов.

Вы говорите, что это должно быть "более дружественным к GC" - что вас беспокоит в текущей версии?

Вы часто добавляете элементы в словарь? Если это так, создайте его с большой начальной емкостью, чтобы избежать оттока.

7
10.12.2008 17:10:43
Я наткнулся на статью об использовании WeakReference для ключа, значения или того и другого. Это было действительно интересное чтение. Может это он и имел ввиду?
Jonathan C Dickinson 10.12.2008 19:50:59

Я думаю, вам будет сложно найти управляемый словарь, который быстрее, чем BCL. Я попытался написать один, и я быстро обнаружил, что это примерно так же быстро, как и когда вы балансируете производительность чтения / записи.

2
10.12.2008 18:05:58