En lisant Habr, je suis tombé sur un article "
Vaut-il la peine d'enregistrer la longueur d'un tableau dans une variable locale en C #? " (Qui était dans la "meilleure" section). Cela me semble une question stupide, des mesures pas entièrement correctes (pourquoi il n'y a pas de mesures pour les boucles imbriquées?) Et une conclusion étrange.
La longueur du tableau en C # doit être stockée dans une variable distincte dans le cas où nous avons plusieurs boucles imbriquées, ci-dessous est un exemple.
Voici un code de test simple sans stocker la longueur du tableau dans une 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); } }
Voici le même code avec l'enregistrement de la longueur du tableau dans une 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); } }
Le code avec enregistrement de la longueur du tableau dans une variable (deuxième option) s'exécute environ 15% plus rapidement.
Une réponse similaire peut être trouvée dans des livres plus ou moins épais sur C # ou .Net, mais en même temps, une personne intelligente poste cela sur Habré et personne dans les commentaires ne lui a indiqué que la longueur du tableau en C # est stockée dans une variable généralement pour les boucles imbriquées et là, elle a vraiment sens.
Je voulais juste laisser un commentaire là-bas, mais je ne pouvais pas partir sans inscription, et après inscription, il s'est avéré que je ne pouvais pas laisser de commentaire là-bas après inscription (car plus de 10 jours se sont écoulés depuis la publication). Peut-être que quelqu'un remarquera cette note et la copiera là comme un commentaire ou quelque chose comme ça.