Prestazioni dei cicli
Fa parte della sezione Logica e flusso del percorso C# di Coddy. Lezione 13 di 66.
Ottimizzare le prestazioni dei cicli può migliorare significativamente la velocità della tua applicazione, soprattutto con grandi insiemi di dati.
Memorizza la lunghezza della raccolta in una variabile prima del ciclo:
int[] numbers = { 1, 2, 3, 4, 5 };
int length = numbers.Length; // Guarda length una sola vez
for (int i = 0; i < length; i++) // Usa el valor guardado
{
Console.WriteLine(numbers[i]);
}Evita le chiamate ripetute ai metodi nelle condizioni del ciclo, ad esempio:
for (int i = 0; i < GetCount(); i++)
{
// Loop body
}Il metodo GetCount() viene chiamato a ogni iterazione del ciclo. Ciò significa che se il ciclo viene eseguito 1000 volte, anche GetCount() verrà eseguito 1000 volte, perché la condizione del ciclo viene valutata prima di ogni iterazione.
Ecco come farlo correttamente:
int count = GetCount();
for (int i = 0; i < count; i++)
{
// Corpo del ciclo
}GetCount() viene chiamato una sola volta prima che inizi il ciclo e il suo valore viene memorizzato nella variabile count. Poi il ciclo usa questo valore memorizzato per tutte le iterazioni, eliminando la necessità di chiamare ripetutamente il metodo.
Questo approccio può rendere il tuo codice più veloce riducendo le operazioni ridondanti, soprattutto quando il metodo chiamato esegue calcoli complessi o accede ai dati.
Sfida
FacileCrea un metodo chiamato optimizedSum che:
- Accetta un array di interi come parametro
- Calcola la somma di tutti gli elementi
- Implementa sia un approccio ottimizzato che uno non ottimizzato:
- Non ottimizzato: chiama array.Length a ogni iterazione del ciclo
- Ottimizzato: memorizza la lunghezza prima del ciclo
- Restituisce il risultato dell’approccio ottimizzato
Provalo tu
public class OptimizedSum
{
// Implementa il metodo optimizedSum
public static int optimizedSum(int[] numbers)
{
// Scrivi il tuo codice qui
}
}Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.
Tutte le lezioni di Logica e flusso
1Array multidimensionali
Fondamenti degli array 2DDichiarare e inizializzare array 2DAccedere agli elementi di un array 2DCicli annidati con array 2DArray irregolariOperazioni comuni sulle matriciRipasso: array multidimensionali4Tecniche di controllo del flusso
Uscite anticipateClausole di guardiaIstruzioni di salto (goto)Break e continueAppiattire le condizioni annidate2Decisioni avanzate
Condizioni multipleLogica booleana complessaConfronto tra if e switchIstruzioni switch annidateRiepilogo - decisioni avanzate5Gestione delle eccezioni
Nozioni di base su try-catchTipi di eccezioneBlocchi catch multipliLavorare con i fileBlocco finallyUsing vs. try-finallyEccezioni personalizzateRiepilogo - gestione degli errori3Miglioramenti dei cicli
Prestazioni dei cicliIterare strutture complesseOgni tipo di cicloRifattorizzare i cicliRiepilogo - Cicli ottimizzati6Gestione dei valori null
Fondamenti dei riferimenti nullTipi valore nullableSchemi di controllo dei valori nullProgrammazione difensivaRiepilogo: sicurezza rispetto ai valori nullEsercitati da solo: Compilatore C# online