parse net example convertir cast asp c# list

c# - net - Cuál es más eficiente: Listar<int> o int



string to int 32 c# (6)

La lista utiliza una matriz internamente, por lo que usar una matriz (correctamente) siempre sería más (o al menos tan eficiente).

Alguien puede decirme cuál es más eficiente entre List<int> e int[] . Porque estoy trabajando en un proyecto y como saben, la eficiencia es una preocupación tan importante ahora.

Si agregaste una nota introductoria a tu publicación, sería genial aunque :)


Sólo por diversión, corrí esto:

int cap = 100000; Stopwatch sw1 = new Stopwatch(); sw1.Start(); int[] ix = new int[cap]; for (int x = 0; x < cap; x++) { ix[x] = 1; } sw1.Stop(); Stopwatch sw2 = new Stopwatch(); sw2.Start(); List<int> iy = new List<int>(cap); for (int y = 0; y < cap; y++) { iy.Add(y); } sw2.Stop(); Console.WriteLine(cap.ToString() + " int[]=" + sw1.ElapsedTicks.ToString()); Console.WriteLine(cap.ToString() + " List<int>=" + sw2.ElapsedTicks.ToString()); Console.ReadKey();

Y conseguí esto:

100000 int[]=1796542 100000 List=2517922

Lo probé en milisegundos transcurridos y obtuve 0 y 1 respectivamente. Claramente el int [] es mucho más rápido, pero a menos que esté hablando de arreglos enormes, diría que es solo nominal.


Si planea usar alguna de las funciones que proporcionaría una lista (búsqueda, clasificación, eliminación, cambio de tamaño), me gustaría ir con una lista porque es probable que estas funciones ya estén muy optimizadas y no pueda escribir mejores versiones de ellas. .


Si sabe exactamente cuántos elementos habrá en la colección y no necesita ninguna de las características adicionales de la List<int> Y (que es un AND muy serio) el rendimiento es una preocupación importante , vaya con int[] . De lo contrario quédate con la List<int> .


este último es más efectivo.
En el código fuente, List<> es nombrado por algunos Arrays.
Por ejemplo, List<Type> aa=new List<Type>();
En general, se declara un array Type[] , cuya longitud es un número determinado. En otra palabra, si declara una List<> , ya se ha utilizado un gran espacio.
Si el elemento de la List<>''s está fuera de longitud, la matriz debe copiarse a otra más grande. Por lo tanto, es mejor no usar List<> .
La mejor manera de usar es declarar la longitud de la misma.
Lista aa=new List<Type>(10);


(list should be resizable) ? List<int> : int[]

List<int> es un contenedor para int[] que cambia de tamaño según sea necesario. Con JIT en línea, deberían tener un rendimiento casi idéntico, pero al JIT le resultará más fácil reducir el rendimiento adicional de int[] porque es una primitiva CLI con instrucciones de IL dedicadas.