Должен ли я быть обеспокоен скоростью словаря .NET? - PullRequest
25 голосов
/ 14 декабря 2009

Я буду создавать проект, который будет использовать поиск по словарю и вставлять немало. Это то, что беспокоит?

Кроме того, если я делаю бенчмаркинг и тому подобное, и это действительно плохо, то как лучше заменить словарь чем-то другим? Будет ли использование массива с «хешированными» ключами еще быстрее? Это не поможет на время вставки, правда?

Кроме того, я не думаю, что я микрооптимизирую, потому что это действительно будет значительная часть кода на рабочем сервере, поэтому, если для его завершения потребуются дополнительные 100 мс, мы будем искать новые справиться с этим.

Ответы [ 12 ]

0 голосов
/ 15 декабря 2009

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

0 голосов
/ 14 декабря 2009

Возможно, вы захотите взглянуть на класс KeyedCollection в System.ObjectModel. Из описания MSDN «предоставляет абстрактный базовый класс для коллекции, ключи которой встроены в значения».

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...