Ottimizzazione del codice

Aggiornamento: novembre 2007

L'ottimizzazione è il processo che consente di ottenere le migliori prestazioni dagli eseguibili e di ridurre al minimo le dimensioni del codice. In Visual C++ sono disponibili i seguenti meccanismi per l'ottimizzazione del codice:

Miglioramento delle prestazioni di un programma

Per informazioni dettagliate su come migliorare le prestazioni di un programma grazie all'utilizzo di tecniche di programmazione corrette, vedere:

Informazioni sull'ottimizzazione del codice

Dal momento che l'ottimizzazione modifica il codice creato dal compilatore, è preferibile ottimizzare il codice solo dopo averne effettuato il test e il debug. In questo modo è possibile eseguire il debug di codice corrispondente al codice sorgente senza preoccuparsi degli effetti dell'ottimizzazione. Dopo avere applicato le ottimizzazioni, è consigliabile effettuare nuovamente il test del codice. A volte, infatti, l'applicazione delle ottimizzazioni modifica il funzionamento del codice. In tal caso può essere necessario effettuare il debug del codice ottimizzato. Per ulteriori informazioni, vedere anche Problemi comuni durante la creazione di una build di rilascio.

Il codice ottimizzato fornisce talvolta risposte diverse non a causa di un errore, ma perché l'ottimizzazione modifica l'ordine dei calcoli e può comportare risultati leggermente diversi a causa dei limiti della precisione dei valori a virgola mobile.

È inoltre possibile che quando si compila codice ottimizzato vengano visualizzati alcuni messaggi di avviso supplementari. Questo comportamento è normale perché alcuni avvisi riguardano solo il codice ottimizzato. Prestando attenzione a questi avvisi, è possibile evitare la maggior parte dei problemi associati all'ottimizzazione.

Paradossalmente, l'ottimizzazione di un programma allo scopo di aumentarne la velocità di esecuzione causa a volte una maggior lentezza nell'esecuzione del codice, perché alcune ottimizzazioni finalizzate a una maggiore velocità causano un aumento delle dimensioni del codice. Le funzioni inline, ad esempio, consentono di eliminare l'overhead di chiamate di funzione, ma se utilizzate in modo eccessivo possono aumentare le dimensioni del programma a tal punto da comportare un aumento degli errori di pagina relativi alla memoria virtuale. La maggiore velocità ottenuta mediante l'eliminazione delle chiamate di funzione può quindi essere annullata dal ritardo causato dallo swapping della memoria. Per questo motivo è consigliabile valutare le prestazioni del programma sia prima che dopo l'ottimizzazione. Per indicazioni generali sul modo migliore per ottimizzare l'applicazione, vedere Suggerimenti per l'ottimizzazione.

Pragma optimize

Se una sezione del codice causa errori o rallentamenti in seguito all'ottimizzazione, è possibile utilizzare il pragma optimize per disattivare l'ottimizzazione di tale sezione. Racchiudere il codice tra due pragma, come illustrato di seguito:

#pragma optimize("", off)
// some code here 
#pragma optimize("", on)

Ulteriori argomenti

Per ulteriori argomenti relativi all'ottimizzazione, vedere:

Per ulteriori informazioni sulla riduzione del tempo per il caricamento dei metodi DLL, vedere l'articolo "Optimizing DLL Load Time Performance", in "Under the Hood" nella colonna di "MSDN Magazine" in MSDN Library.

Per ulteriori informazioni sulla riduzione del paging nelle applicazioni, vedere gli articoli, "Improving Runtime Performance with the Smooth Working Set Tool" e "Improving Runtime Performance with the Smooth Working Set Tool—Part 2", nella colonna "Bugslayer" di "MSDN Magazine" in MSDN Library.

Vedere anche

Altre risorse

Riferimenti alla compilazione in C/C++