Condividi tramite


Ottimizzazione del codice

Ottimizzando un file eseguibile, è possibile raggiungere un equilibrio tra velocità di esecuzione e dimensione del codice. In questo argomento vengono illustrati alcuni dei meccanismi disponibili in Visual C++ per l'ottimizzazione del 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 pragma che è possibile utilizzare nel codice per migliorare le prestazioni.

  • Opzioni del compilatore elencate per categoria
    Elenco delle opzioni del compilatore /O che influiscono in particolare sulla velocità di esecuzione o sulla dimensione del codice.

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

Pragma optimize

Se una sezione ottimizzata del codice causa errori o un rallentamento, è 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)

Tecniche di programmazione

È possibile che durante la compilazione di codice ottimizzato vengano visualizzati alcuni messaggi di avviso supplementari. Questo comportamento è normale perché alcuni avvisi riguardano solo il codice ottimizzato. Questi avvisi sono utili per evitare molti problemi di ottimizzazione.

Paradossalmente, l'ottimizzazione di un programma allo scopo di aumentarne la velocità può causare una maggior lentezza nell'esecuzione del codice. Ciò è dovuto al fatto che alcune ottimizzazioni finalizzate a una maggiore velocità causano un aumento delle dimensioni del codice. Le funzioni inline, ad esempio, consentono di eliminare il sovraccarico di chiamate di funzione. Se utilizzate in modo eccessivo, tuttavia, tali funzioni possono causare un aumento delle dimensioni del programma tale 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.

Negli argomenti seguenti vengono illustrate le procedure di programmazione ottimali.

  • Suggerimenti per il miglioramento del codice critico
    L'utilizzo di tecniche di codificazione migliori può garantire prestazioni migliori. In questo argomento vengono suggerite tecniche di scrittura del codice utili per assicurarsi che le parti di codice da eseguire rapidamente producano i risultati desiderati.

  • Suggerimenti per l'ottimizzazione
    Fornisce linee guida generali sul modo migliore per ottimizzare l'applicazione.

Debug di codice ottimizzato

Poiché l'ottimizzazione potrebbe modificare il codice creato dal compilatore, si consiglia di eseguire il debug dell'applicazione e di valutarne le prestazioni, quindi di ottimizzare il codice.

Negli argomenti seguenti vengono fornite informazioni di base sul debug.

Negli argomenti seguenti vengono fornite informazioni più avanzate sul debug.

Negli argomenti seguenti vengono fornite informazioni sull'ottimizzazione della compilazione, del caricamento e dell'esecuzione del codice.

Vedere anche

Altre risorse

Riferimenti alla compilazione in C/C++