Recientemente realicé algunas mediciones aproximadas del rendimiento en List<>
frente a []
para una serie de pequeñas estructuras. System.Array parecía ganar indiscutiblemente, así que fui con eso.¿System.Array realiza boxeo en tipos de valor o no?
Me acabo de dar cuenta de que System.Array contiene tipos de objetos, por lo que seguramente llenarlo de estructuras provocaría el encajamiento.
Sin embargo, the MSDN entry for System.Array estados:
En la versión de .NET Framework 2.0, la clase Array implementa los
System.Collections.Generic.IList<T>
,System.Collections.Generic.ICollection<T>
, ySystem.Collections.Generic.IEnumerable<T>
interfaces genéricas. Las implementaciones se proporcionan a las matrices en tiempo de ejecución y, por lo tanto, son no visibles para las herramientas de creación de documentación. Como resultado, las interfaces genéricas no aparecen en la sintaxis de declaración para la clase Array , y no hay temas de referencia para miembros de la interfaz a los que se pueda acceder al fundir una matriz en el tipo de interfaz genérica (implementaciones de interfaz explícita) .
¿Esto significa que el boxeo no se produce después de todo? (Y explicaría los resultados de mi rendimiento)
Para explicar sus resultados de rendimiento probablemente deberíamos ver el código que usó para medir el rendimiento. – Snowbear