c# .net immutable-collections

c# - Diferencia entre ImmutableArray<T> y ImmutableList<T>



.net immutable-collections (4)

Aquí hay una lectura que podría ayudar a explicar

blog

Aquí hay un extracto

Razones para usar matriz inmutable:

  • La actualización de los datos es rara o el número de elementos es bastante pequeño (<16)
  • necesita poder iterar sobre los datos en secciones críticas de rendimiento
  • tiene muchas instancias de colecciones inmutables y no puede permitirse mantener los datos en árboles

Razones para quedarse con la lista inmutable:

  • La actualización de los datos es común o no se espera que la cantidad de elementos sea pequeña
  • Actualizar la colección es más crítico para el rendimiento que iterar los contenidos

¿Cuál es la diferencia entre ImmutableArray<T> e ImmutableList<T> , y dónde sería mejor usar cada uno?


Creo que estás preguntando dónde usar ambos. Este blog ayudará de lo contrario algunos buenos puntos se mencionan aquí.

Usa una matriz inmutable cuando:

  • La actualización de los datos es rara o el número de elementos es bastante pequeño (<16)
  • Debe poder iterar sobre los datos en secciones críticas de rendimiento
  • Tiene muchas instancias de colecciones inmutables y no puede permitirse mantener los datos en árboles.

Use la lista inmutable cuando:

  • La actualización de los datos es común o no se espera que la cantidad de elementos sea pequeña
  • Actualizar la colección es más crítico para el rendimiento que iterar los contenidos

La principal diferencia es que ImmutableArray es solo una envoltura alrededor de una matriz normal, lo que significa que la recuperación de elementos dentro de la matriz es extremadamente rápida.

Un ImmutableArray también es una estructura que significa que es un tipo de valor por lo que ocupa menos espacio que una Lista inmutable que es un tipo de referencia.

Por estas razones, un ImmutableArray es adecuado para usar si rara vez necesita actualizar sus datos o si el número de elementos es pequeño (menos de 16) o si el rendimiento de la iteración sobre la colección es importante.

Si sus necesidades no coinciden con las razones anteriores, debe utilizar una lista de ImmutableList .

Busque aquí la blog .


Pasando por la publicación del blog " Bienvenido, por favor, ImmutableArray <T> " (la misma publicación del blog a la que hacen referencia todos los demás), las diferencias son ...

ImmutableArray :

  • Implementación simple (solo una matriz).
  • No está optimizado para actualizar rápidamente grandes colecciones (es necesario copiar toda la matriz).
  • Más eficiente para la mayoría de los casos de uso (cualquier cosa que no implique la actualización de colecciones grandes).

ImmutableList :

  • Implementación más complicada (algo que involucra árboles).
  • Está optimizado para actualizar rápidamente grandes colecciones (se puede hacer en tiempo logarítmico).
  • Menos eficiente para la mayoría de los casos de uso.

Entonces, si no estás actualizando mucho o tus colecciones son pequeñas, usa ImmutableArray . Si va a actualizar colecciones grandes con frecuencia, deberá utilizar ImmutableList .