Loop Performance
Teil des Abschnitts Logik & Ablauf der C#-Journey von Coddy — Lektion 13 von 66.
Die Optimierung der Schleifenleistung kann die Geschwindigkeit Ihrer Anwendung erheblich verbessern, insbesondere bei großen Datensätzen.
Speichern Sie die Länge der Auflistung in einer Variable vor der Schleife:
int[] numbers = { 1, 2, 3, 4, 5 };
int length = numbers.Length; // Store length once
for (int i = 0; i < length; i++) // Use stored value
{
Console.WriteLine(numbers[i]);
}Vermeiden Sie wiederholte Methodenaufrufe in Schleifenbedingungen, zum Beispiel:
for (int i = 0; i < GetCount(); i++)
{
// Loop body
}Die GetCount()-Methode wird bei jeder Iteration der Schleife aufgerufen. Das bedeutet, dass, wenn die Schleife 1000 Mal läuft, GetCount() ebenfalls 1000 Mal ausgeführt wird, da die Schleifenbedingung vor jeder Iteration ausgewertet wird.
Hier ist, wie man es richtig macht:
int count = GetCount();
for (int i = 0; i < count; i++)
{
// Loop body
}GetCount() wird nur einmal vor dem Start der Schleife aufgerufen, und sein Wert wird in der count-Variable gespeichert. Dann verwendet die Schleife diesen gespeicherten Wert für alle Iterationen und eliminiert die Notwendigkeit, die Methode wiederholt aufzurufen.
Dieser Ansatz kann Ihren Code schneller ausführen lassen, indem redundante Operationen reduziert werden, insbesondere wenn die aufgerufene Methode komplexe Berechnungen oder Datenzugriffe durchführt.
Aufgabe
EinfachErstellen Sie eine Methode namens optimizedSum, die:
- Ein Array von Ganzzahlen als Parameter nimmt
- Die Summe aller Elemente berechnet
- Sowohl einen optimierten als auch einen unoptimierten Ansatz implementiert:
- Unoptimiert: Rufen Sie
array.Lengthin jeder Schleifeniteration auf - Optimiert: Cachen Sie die Länge vor der Schleife
- Unoptimiert: Rufen Sie
- Das Ergebnis aus dem optimierten Ansatz zurückgibt
Spickzettel
Speichern Sie die Länge der Sammlung vor der Schleife in einer Variable, um wiederholten Eigenschaftszugriff zu vermeiden:
int[] numbers = { 1, 2, 3, 4, 5 };
int length = numbers.Length; // Store length once
for (int i = 0; i < length; i++) // Use stored value
{
Console.WriteLine(numbers[i]);
}Vermeiden Sie wiederholte Methodenaufrufe in Schleifenbedingungen, indem Sie das Ergebnis zwischenspeichern:
// Inefficient - method called every iteration
for (int i = 0; i < GetCount(); i++)
{
// Loop body
}
// Optimized - method called once
int count = GetCount();
for (int i = 0; i < count; i++)
{
// Loop body
}Probier es selbst
public class OptimizedSum
{
// Implementieren Sie die optimizedSum-Methode
public static int optimizedSum(int[] numbers)
{
// Schreiben Sie Ihren 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