Bezdepbonusu7Программирование: статьи и ответы

Вопрос

Hashtable медленно добавляет значения?

Автор вопроса: We Are All MonicaОтветов: 1

В настоящее время я использую Hashtable для хранения списка уникальных идентификаторов и связанных данных, все из которых считываются из файла.

Длина этого файла данных может быть очень большой, от 1 записи до нескольких сотен тысяч. Я заметил значительное замедление скорости добавления записей в хеш-таблицу после того, как она превысила 50 000 записей.

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

edit: Сейчас я просто использую Hashtable. Я думаю, что это, вероятно, должно быть Dictionary‹string, MyDataObject>, но это похоже на отдельную проблему.

  • Какой класс вы используете? Словарь‹TKey, TValue›? Daniel Brückner 04.09.2009
  • Проверяли ли вы, повышает ли установка большой емкости производительность при вставке большого количества элементов? AnthonyWJones 04.09.2009
  • Настройка емкости не должна иметь большого значения - и ее не следует делать, если вы не знаете, сколько записей у вас будет (например, от 1 до 100 000+). tanascius 04.09.2009
  • Я не проверял, но согласен с Танаскиусом - я не хочу устанавливать емкость 100 000, если у меня будет только ‹10 предметов. We Are All Monica 04.09.2009
  • Вы читаете файл в память, прежде чем вставить его в словарь? Пожалуйста, сделайте это (в целях тестирования), чтобы убедиться, что проблема действительно во вставке. tanascius 04.09.2009
  • В настоящее время я этого не делаю, но я профилировал код, и узким местом определенно является Hashtable.Add(). We Are All Monica 04.09.2009

collectionshashtable

Ответы

Ответ 1 · рейтинг 2 · Preet Sangha

см. здесь сравнение хеш-таблиц и словарей для большого количества элементов.

Перевод вопроса и ответов сообщества Stack Overflow, лицензия CC BY-SA. Оригинал на Stack Overflow.

Похожие материалы