Cuándo guardar la longitud de una matriz en una variable local en C #

Leyendo a Habr, me encontré con el artículo " ¿Vale la pena guardar la longitud de una matriz en una variable local en C #? " (Que estaba en la sección "mejor"). Me parece una pregunta estúpida, no mediciones completamente correctas (¿por qué no hay mediciones para bucles anidados?) Y una conclusión extraña.

La longitud de la matriz en C # debe almacenarse en una variable separada en el caso de que tengamos varios bucles anidados, a continuación se muestra un ejemplo.

Aquí hay un código de prueba simple sin almacenar la longitud de la matriz en una variable:

Random rnd1 = new Random(DateTime.UtcNow.Millisecond); int[,] arr1 = new int[Int16.MaxValue, Byte.MaxValue]; for (int i = 0; i < arr1.GetLength(0); i++) { for (int j = 0; j < arr1.GetLength(1); j++) { arr1[i, j] = rnd1.Next(Int32.MinValue, Int32.MaxValue); } } 

Aquí está el mismo código con guardar la longitud de la matriz en una variable:

 Random rnd1 = new Random(DateTime.UtcNow.Millisecond); int[,] arr1 = new int[Int16.MaxValue, Byte.MaxValue]; int len1 = arr1.GetLength(0), len2 = arr1.GetLength(1); for (int i = 0; i < len1; i++) { for (int j = 0; j < len2; j++) { arr1[i, j] = rnd1.Next(Int32.MinValue, Int32.MaxValue); } } 

El código para guardar la longitud de la matriz en una variable (segunda opción) se ejecuta aproximadamente un 15% más rápido.

Se puede encontrar una respuesta similar en libros más o menos gruesos en C # o .Net, pero al mismo tiempo una persona inteligente publica esto en Habré y nadie en los comentarios le indicó que la longitud de la matriz en C # se almacena en una variable generalmente para bucles anidados y allí realmente tiene significado.

Solo quería dejar un comentario allí, pero no podía irme sin registrarme, y después del registro resultó que después del registro tampoco podía dejar un comentario allí (ya que han pasado más de 10 días desde la publicación). Tal vez alguien notará esta nota y la copiará allí como un comentario o algo así.

Source: https://habr.com/ru/post/438516/


All Articles