Schleifenleistung
Teil des Abschnitts Logik & Ablauf der C#-Journey von Coddy. Lektion 13 von 66.
Die Optimierung der Schleifenleistung kann die Geschwindigkeit deiner Anwendung deutlich verbessern, insbesondere bei großen Datensätzen.
Speichere die Länge der Sammlung vor der Schleife in einer Variablen:
int[] numbers = { 1, 2, 3, 4, 5 };
int length = numbers.Length; // Länge einmal speichern
for (int i = 0; i < length; i++) // Gespeicherten Wert verwenden
{
Console.WriteLine(numbers[i]);
}Vermeide wiederholte Methodenaufrufe in Schleifenbedingungen, zum Beispiel:
for (int i = 0; i < GetCount(); i++)
{
// Schleifenkörper
}Die Methode GetCount() wird bei jeder Iteration der Schleife aufgerufen. Das bedeutet, dass GetCount() ebenfalls 1000-mal ausgeführt wird, wenn die Schleife 1000-mal läuft, da die Schleifenbedingung vor jeder Iteration ausgewertet wird.
So machst du es richtig:
int count = GetCount();
for (int i = 0; i < count; i++)
{
// Schleifenkörper
}GetCount() wird nur einmal aufgerufen, bevor die Schleife beginnt, und sein Wert wird in der Variablen count gespeichert. Anschließend verwendet die Schleife diesen gespeicherten Wert für alle Iterationen, sodass die Methode nicht wiederholt aufgerufen werden muss.
Dieser Ansatz kann dafür sorgen, dass dein Code schneller ausgeführt wird, indem redundante Vorgänge reduziert werden, insbesondere wenn die aufgerufene Methode komplexe Berechnungen oder Datenzugriffe durchführt.
Aufgabe
EinfachErstelle eine Methode namens optimizedSum, die:
- Ein Array von Ganzzahlen als Parameter übernimmt
- Die Summe aller Elemente berechnet
- Sowohl einen optimierten als auch einen nicht optimierten Ansatz implementiert:
- Unoptimized: In jeder Schleifeniteration array.Length aufrufen
- Optimized: Die Länge vor der Schleife zwischenspeichern
- Das Ergebnis des optimierten Ansatzes zurückgibt
Probier es selbst
public class OptimizedSum
{
// Implementiere die optimizedSum-Methode
public static int optimizedSum(int[] numbers)
{
// Schreibe deinen Code hier
}
}Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.
Alle Lektionen in Logik & Ablauf
1Mehrdimensionale Arrays
Grundlagen 2D-Arrays2D-Arrays deklarieren und initialisierenAuf Elemente von 2D-Arrays zugreifenVerschachtelte Schleifen mit 2D-ArraysGezackte ArraysHäufige MatrixoperationenZusammenfassung – Mehrdimensionale Arrays4Techniken zur Ablaufsteuerung
Frühe RückgabenWächterklauselnSprunganweisungen (goto)Break und ContinueVerschachtelte Bedingungen abflachen7Logische Operatoren – Fortgeschritten
KurzschlussauswertungBedingte logische OperatorenOperatorrangfolgeRückblick – Erweiterte Operatoren2Fortgeschrittene Entscheidungslogik
Mehrere BedingungenKomplexe boolesche LogikVergleich: If vs. SwitchVerschachtelte Switch-AnweisungenRückblick – Fortgeschrittene Entscheidungen5Fehlerbehandlung mit Exceptions
Grundlagen von Try-CatchException-TypenMehrere Catch-BlöckeArbeiten mit DateienFinally-BlockUsing im Vergleich zu Try-FinallyBenutzerdefinierte ExceptionsZusammenfassung – Fehlerbehandlung3Schleifenverbesserungen
SchleifenleistungKomplexe IterationJeder SchleifentypSchleifen refaktorierenRückblick – Optimierte Schleifen6Behandlung von Nullwerten
Grundlagen von NullreferenzenNullable WerttypenMuster zur NullprüfungDefensive ProgrammierungZusammenfassung – NullsicherheitÜbe selbstständig: Online-C#-Compiler