Ottimizzazione del codice

Ottimizzando un eseguibile, è possibile ottenere un equilibrio tra velocità di esecuzione rapida e piccole dimensioni del codice. Questo argomento illustra alcuni dei meccanismi forniti da Visual Studio per ottimizzare il codice.

Funzionalità del linguaggio

Negli argomenti seguenti vengono descritte alcune delle funzionalità di ottimizzazione nel linguaggio C/C++.

Pragma e parole chiave di ottimizzazione
Elenco di parole chiave e pragmas che è possibile usare nel codice per migliorare le prestazioni.

Opzioni del compilatore elencate per categoria
Elenco di opzioni del compilatore /O che influiscono in modo specifico sulla velocità di esecuzione o sulle dimensioni del codice.

Dichiaratore di riferimento rvalue: &&
I riferimenti Rvalue supportano l'implementazione della semantica di spostamento. Se la semantica di spostamento viene usata per implementare librerie di modelli, le prestazioni delle applicazioni che usano tali modelli possono migliorare significativamente.

Pragma optimize

Se una sezione ottimizzata del codice causa errori o rallentamenti, è possibile usare il pragma di ottimizzazione per disattivare l'ottimizzazione per tale sezione.

Racchiudere il codice tra due pragma, come illustrato di seguito:

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

Procedure di programmazione

È possibile notare altri messaggi di avviso quando si compila il codice con l'ottimizzazione. Questo comportamento è previsto perché alcuni avvisi sono correlati solo al codice ottimizzato. È possibile evitare molti problemi di ottimizzazione se sono stati visualizzati questi avvisi.

Paradossalmente, l'ottimizzazione di un programma per la velocità potrebbe causare un rallentamento dell'esecuzione del codice. Ciò è dovuto al fatto che alcune ottimizzazioni per aumentare la velocità delle dimensioni del codice. Ad esempio, l'inlining delle funzioni elimina l'overhead delle chiamate di funzione. Tuttavia, l'inlining di un numero eccessivo di codice potrebbe rendere il programma così grande che il numero di errori di pagina della memoria virtuale aumenta. Pertanto, la velocità ottenuta dall'eliminazione delle chiamate di funzione può andare persa per lo scambio di memoria.

Gli argomenti seguenti illustrano le procedure di programmazione consigliate.

Suggerimenti per il miglioramento del codice critico
Le tecniche di codifica migliori possono offrire prestazioni migliori. Questo argomento suggerisce tecniche di codifica che consentono di assicurarsi che le parti critiche del codice vengano eseguite in modo soddisfacente.

Procedure consigliate di ottimizzazione
Fornisce linee guida generali su come ottimizzare l'applicazione.

Debug di codice ottimizzato

Poiché l'ottimizzazione potrebbe modificare il codice creato dal compilatore, è consigliabile eseguire il debug dell'applicazione e misurarne le prestazioni e quindi ottimizzare il codice.

Negli argomenti seguenti vengono fornite informazioni su come eseguire il debug delle build di versione.

Negli argomenti seguenti vengono fornite informazioni su come ottimizzare la compilazione, il caricamento e l'esecuzione del codice.

In questa sezione

Pragma e parole chiave di ottimizzazione
Incremento dell'efficienza delle operazioni del compilatore
Causa della possibile perdita di precisione dei numeri a virgola mobile
Formato a virgola mobile IEEE
Suggerimenti per il miglioramento del codice critico
Mancata generazione di codice in seguito all'uso di nomi di funzione senza ()
Procedure consigliate di ottimizzazione
Ottimizzazioni PGO
Variabili d'ambiente per le ottimizzazioni GPO
PgoAutoSweep
pgomgr
pgosweep
Procedura: Unire più profili PGO in un unico profilo

Vedi anche

C/C++ Building Reference (Informazioni di riferimento per la compilazione in C/C++)