Loop Performance
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 GetCount() method wird bei jeder iteration der Schleife called. Das bedeutet, dass GetCount() bei 1000 Durchläufen der Schleife ebenfalls 1000-mal ausgeführt wird, 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 once aufgerufen, bevor die Schleife beginnt, und sein Wert wird in der Variable count stored. Dann verwendet die Schleife diesen gespeicherten Wert für alle iteration, wodurch der wiederholte Aufruf der method entfällt.
Dieser approach kann deinen Code schneller ausführen, indem redundante Operationen reduziert werden, insbesondere wenn die aufgerufene method komplexe Berechnungen oder Zugriffe auf data 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
1Multi-dimensional Arrays
2D Arrays BasicsDeclaring and Initializing 2DAccessing 2D Array ElementsNested Loops with 2D ArraysJagged ArraysCommon Matrix OperationsRecap - Multi-dimensional4Flow Control Techniques
Early ReturnsGuard ClausesJump Statements (goto)Break and ContinueFlatten Nested Conditionals7Logical Operators Advanced
Short-Circuit EvaluationConditional Logical OperatorsOperator PrecedenceRecap - Advanced Operators2Advanced Decision Making
Multiple ConditionsComplex Boolean LogicIf vs. Switch ComparisonNested Switch StatementsRecap - Advanced Decisions5Exception Handling
Try-Catch BasicsException TypesMultiple Catch BlocksWorking with FilesFinally BlockUsing vs. Try-FinallyCustom ExceptionsRecap - Error Handling3Loop Enhancements
Loop PerformanceIterating ComplexEach Loop TypeRefactoring LoopsRecap - Optimized Loops6Null Handling
Null Reference BasicsNullable Value TypesNull Checking PatternsDefensive ProgrammingRecap - Null SafetyÜbe selbstständig: Online-C#-Compiler