Разница между ImmutableArray<T> и ImmutableList<T>

Какая разница между ImmutableArray<T> а также ImmutableList<T>и где было бы лучше использовать каждый?

4 ответа

Решение

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

Используйте неизменяемый массив, когда:

  • Обновление данных редко или количество элементов довольно мало (<16)
  • Вы должны иметь возможность перебирать данные в критических разделах производительности
  • У вас много экземпляров неизменных коллекций, и вы не можете позволить себе хранить данные в деревьях.

Используйте неизменный список, когда:

  • Обновление данных является распространенным явлением или число элементов не должно быть небольшим
  • Обновление коллекции более критично для производительности, чем перебор содержимого.

Вот некоторые чтения, которые могут помочь объяснить

http://blogs.msdn.com/b/dotnet/archive/2013/06/24/please-welcome-immutablearray.aspx

вот выдержка

Причины использования неизменяемого массива:

  • Обновление данных редко или количество элементов довольно мало (<16)
  • Вы должны иметь возможность перебирать данные в критических разделах производительности
  • у вас есть много экземпляров неизменных коллекций, и вы не можете позволить себе хранить данные в деревьях

Причины придерживаться неизменного списка:

  • Обновление данных является распространенным явлением или число элементов не должно быть небольшим
  • Обновление коллекции более критично для производительности, чем перебор содержимого.

Основное отличие состоит в том, что ImmutableArray это просто обертка вокруг обычного массива, что означает, что извлечение элементов в массиве очень быстро.

ImmutableArray также является структурой, означающей, что это тип значения, поэтому он занимает меньше места, чем неизменяемый список, который является ссылочным типом.

По этим причинам ImmutableArray подходит для использования, если вам редко требуется обновлять данные, или если количество элементов невелико (менее 16) или если важна производительность итерации по коллекции.

Если ваши потребности не соответствуют вышеуказанным причинам, вы должны использовать ImmutableList,

Смотрите здесь для документации.

Судя по сообщению в блоге " Please welcome ImmutableArray ; " (то же самое сообщение в блоге, на которое все остальные ссылаются), различия...

ImmutableArray:

  • Простая реализация (просто массив).
  • Не оптимизирован для быстрого обновления больших коллекций (необходимо скопировать весь массив).
  • Более эффективно для большинства случаев использования (все, что не связано с обновлением больших коллекций).

ImmutableList:

  • Более сложная реализация (что-то, связанное с деревьями).
  • Оптимизирован для быстрого обновления больших коллекций (это можно сделать за логарифмическое время).
  • Менее эффективен для большинства случаев использования.

Поэтому, если вы не очень много обновляете или у вас небольшие коллекции, используйте ImmutableArray, Если вы собираетесь часто обновлять большие коллекции, вам нужно использовать ImmutableList,

Другие вопросы по тегам