Подтвердить что ты не робот

Словарь, список или массив?

Я пишу службу, где производительность важна, и я не уверен, что является самой быстрой. У меня есть несколько объектов (50-200), каждый из которых имеет ID в них (ints, например, 84397 или 23845). Будет ли быстрее иметь словарь, список пар KeyValue или список с индексами, установленными для идентификаторов, а остальные имеют нулевые значения или массив с той же идеей?

4b9b3361

Ответ 1

Это зависит от того, какую операцию вы хотите выполнить. Предположим, что вы хотите найти объект с заданным ID.

  • Самый массивный подход к массиву: доступ к myArray[84397] - это операция с постоянным временем O (1). Конечно, для этого подхода требуется большая часть памяти.
  • Словарь почти такой же быстрый, но требует меньше памяти, поскольку он использует внутреннюю таблицу хеш-таблицы.
  • Список парного подхода является самым медленным, так как вам может потребоваться пройти весь список, чтобы найти вашу запись, что дает сложность O (n).

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

Ответ 2

Dictionary<TKey, TValue> использует хэш-таблицу внутри, поэтому я думаю, что это будет самый быстрый.

Ответ 4

Вы также можете использовать Hashtables. Словарь внутренне использует его. но словарь имеет то преимущество, что он является типом GENERIC, который дает вам безопасность типа.

вот другая тема Словарь Vs HashTable Надеюсь, это поможет вам решить.

Praveen