Suggerimenti sulle prestazioni .NET

 

Il termine prestazioni fa in genere riferimento alla velocità di esecuzione di un programma.  È talvolta possibile aumentare la velocità di esecuzione attenendosi a determinate regole nel codice sorgente.  In alcuni programmi è importante esaminare attentamente il codice e utilizzare i code profiler per assicurarsi che venga eseguito alla massima velocità possibile.  In altri, non è possibile eseguire questa ottimizzazione perché il codice viene eseguito a una velocità accettabile man mano che viene scritto.  In questo articolo vengono elencate le aree comuni in cui le prestazioni possono risultare compromesse e suggerimenti per migliorarle, oltre a collegamenti ad altri argomenti relativi alle prestazioni.  Per ulteriori informazioni sulla pianificazione e misurazione delle prestazioni, vedere .NET Framework Performance.  

Boxing e unboxing

È meglio evitare di utilizzare tipi valore nelle situazioni in cui devono essere sottoposti a boxing un numero elevato di volte, ad esempio in classi di raccolte non generiche come System.Collections.ArrayList.  È possibile evitare la conversione boxing di tipi valore tramite raccolte generiche come System.Collections.Generic.List<T>.  Le operazioni di boxing e unboxing sono processi onerosi dal punto di vista del calcolo.  Il boxing di un tipo di valore comporta infatti la creazione di un oggetto completamente nuovo.  operazione può essere fino a 20 volte più lunga rispetto a una semplice assegnazione di riferimento.  Durante l'unboxing il processo di cast può essere quattro volte più lungo di un'assegnazione.  Per ulteriori informazioni, vedere Boxing e unboxing.  

Stringhe

Quando si concatena un numero elevato di variabili stringa, ad esempio in un ciclo ridotto, utilizzare System.Text.StringBuilder anziché l'operatore + C# oppure gli operatori di concatenazione di Visual Basic.  Per ulteriori informazioni, vedere Procedura: concatenare più stringhe (Guida per programmatori C#) e Concatenation Operators in Visual Basic.  

Distruttori

Non utilizzare distruttori vuoti.  Quando una classe contiene un distruttore, viene creata una voce nella coda di finalizzazione.  Quando si chiama il distruttore, viene richiamato Garbage Collector per elaborare la coda.  Se il distruttore è vuoto, si verifica semplicemente un calo di prestazioni.  Per ulteriori informazioni, vedere Distruttori (Guida per programmatori C#) e Object Lifetime: How Objects Are Created and Destroyed (Visual Basic).  

Altre risorse

Vedere anche

.NET Framework Performance
Nozioni di base sulla programmazione
Visual Basic Programming Guide
Guida per programmatori C#