Редактировать: не берите в голову мой комментарий. Я думал, что вы говорите о C ++. Я понятия не имею, является ли мой пост актуальным в мире C # ..
Хеш-таблица может быть немного быстрее. Двоичные деревья (это то, что используется в словаре) имеют тенденцию быть относительно медленными из-за способа доступа к памяти. Это особенно верно, если ваше дерево становится очень большим.
Однако, прежде чем менять структуру данных, пытались ли вы использовать собственный распределитель пулов для своего словаря? Могу поспорить, что время потрачено не на обход самого дерева, а на миллионы распределений и освобождений словарь вам подойдет.
Вы можете увидеть увеличение скорости в 10 раз, просто подключив простой распределитель пулов к шаблону словаря. Afaik boost имеет компонент, который можно использовать напрямую.
Другой вариант: если вы знаете, что в ваших целых числах существует только 64 000 записей, вы можете записать их в файл и создать для него идеальную хеш-функцию. Таким образом, вы можете просто использовать хеш-функцию для отображения ваших целых чисел в диапазоне от 0 до 64 000 и индексировать битовый массив.
Вероятно, самый быстрый способ, но менее гибкий. Вы должны переделывать свою идеальную хеш-функцию (может быть сделано автоматически) каждый раз, когда изменяется набор целых чисел.