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

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

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

4b9b3361

Ответ 1

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

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

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

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

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

Ответ 2

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

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

здесь выдержка

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

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

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

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

Ответ 3

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

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

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

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

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

Ответ 4

Переход на сообщение в блоге " Пожалуйста, приветствуйте ImmutableArray <T> " (то же сообщение в блоге, которое все остальные ссылаются), различия...

ImmutableArray:

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

ImmutableList:

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

Итак, если вы не много обновляете, или