Als ich Habr las, stieß ich auf einen Artikel "
Lohnt es sich, die Länge eines Arrays in einer lokalen Variablen in C # zu speichern? " (Der Abschnitt "Beste"). Es scheint mir eine dumme Frage zu sein, nicht ganz korrekte Messungen (warum gibt es keine Messungen für verschachtelte Schleifen?) Und eine seltsame Schlussfolgerung.
Die Länge des Arrays in C # sollte in einer separaten Variablen gespeichert werden, wenn mehrere verschachtelte Schleifen vorhanden sind. Nachfolgend finden Sie ein Beispiel.
Hier ist ein einfacher Testcode, ohne die Länge des Arrays in einer Variablen zu speichern:
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); } }
Hier ist der gleiche Code zum Speichern der Länge des Arrays in einer Variablen:
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); } }
Code mit dem Speichern der Länge des Arrays in einer Variablen (zweite Option) wird etwa 15% schneller ausgeführt.
Eine ähnliche Antwort findet sich in mehr oder weniger dicken Büchern über C # oder .Net, aber gleichzeitig postet eine intelligente Person dies auf Habré, und niemand in den Kommentaren gab an, dass die Länge des Arrays in C # in einer Variablen gespeichert ist, die normalerweise für verschachtelte Schleifen gilt, und dort tatsächlich vorhanden ist Bedeutung.
Ich wollte dort nur einen Kommentar hinterlassen, konnte aber nicht ohne Registrierung gehen, und nach der Registrierung stellte sich heraus, dass ich nach der Registrierung dort keinen Kommentar hinterlassen konnte (da seit der Veröffentlichung mehr als 10 Tage vergangen sind). Vielleicht bemerkt jemand diese Notiz und kopiert sie dort als Kommentar oder ähnliches.