Suggerimenti sulle prestazioni .NET

Il termine prestazioni si riferisce in genere alla velocità di esecuzione di un programma. In alcuni casi, è possibile aumentare la velocità di esecuzione seguendo determinate regole di base nel codice sorgente. In alcuni programmi, è importante esaminare attentamente il codice e usare i profiler per verificare che venga eseguito il più velocemente possibile. In altri programmi, non è necessario eseguire questa ottimizzazione perché il codice viene eseguito con una velocità ragionevole così com'è scritto. In questo articolo sono elencate alcune aree in cui si verificano comunemente problemi di prestazioni e vengono proposti suggerimenti per migliorarle, oltre a collegamenti ad altri argomenti dedicati alle prestazioni. Per altre informazioni sulla pianificazione e la misurazione delle prestazioni, vedere Prestazioni

Boxing e unboxing

È consigliabile evitare l'uso di tipi valore nelle situazioni in cui devono essere sottoposti a conversione boxing un numero elevato di volte, ad esempio nelle classi di raccolte non generiche, come System.Collections.ArrayList. È possibile evitare la conversione boxing di tipi valore usando raccolte generiche, come System.Collections.Generic.List<T>. Le conversioni boxing e unboxing sono processi onerosi dal punto di vista del calcolo. Quando un tipo valore viene sottoposto a conversione boxing, è necessario creare un oggetto completamente nuovo. L'operazione può richiedere fino a 20 volte più tempo rispetto a una semplice assegnazione di riferimento. Durante l'unboxing, il processo di cast può richiedere il quadruplo del tempo rispetto a un'assegnazione. Per altre informazioni, vedere Boxing e unboxing.

Stringhe

Quando si concatena un numero elevato di variabili stringa, ad esempio in un ciclo rigido, usare System.Text.StringBuilder invece dell'operatore + C# o degli operatori di concatenazione di Visual Basic. Per altre informazioni, vedere Come concatenare più stringhe e operatori di concatenazione in Visual Basic.

Finalizzatori

I finalizzatori vuoti non devono essere usati. Quando una classe contiene un finalizzatore, viene creata una voce nella coda Finalize. Quando si chiama il finalizzatore, viene richiamato Garbage Collector per elaborare la coda. Se il finalizzatore è vuoto, ciò comporta semplicemente una perdita di prestazioni. Per altre informazioni, vedere Finalizzatori e durata degli oggetti: creazione e eliminazione definitiva degli oggetti.

Risorse aggiuntive

Vedi anche