/OPT (Ottimizzazioni)
Controlla le ottimizzazioni che vengono eseguite da LINK durante una compilazione.
/OPT:{REF | NOREF}
/OPT:{ICF[=iterations] | NOICF}
Argomenti
REF | NOREF
Con /OPT:REF vengono eliminati dati e/o funzioni a cui non viene mai fatto riferimento, mentre con /OPT:NOREF tali dati e/o funzioni vengono mantenuti.Per impostazione predefinita, le funzioni di package senza riferimenti vengono rimosse.Un oggetto contiene funzioni di package (COMDAT) se è stato compilato con l'opzione /Gy.Tale ottimizzazione viene denominata eliminazione COMDAT transitiva.Per eseguire l'override di questa impostazione predefinita e mantenere i COMDAT senza riferimenti nel programma, specificare /OPT:NOREF.È possibile utilizzare l'opzione /INCLUDE per eseguire l'override della rimozione di un simbolo specifico.
Se è specificata l'opzione /DEBUG, l'impostazione predefinita per /OPT è NOREF (in caso contrario, è REF) e tutte le funzioni vengono conservate nell'immagine.Per eseguire l'override dell'impostazione predefinita e ottimizzare una build di debug, specificare /OPT:REF.L'opzione /OPT:REF disabilita il collegamento incrementale.
È necessario contrassegnare in modo esplicito i dati come COMDAT. Utilizzare __declspec(selectany).
Se si specifica l'opzione /OPT:REF, /OPT:ICF è attivo per impostazione predefinita.Se si desidera specificare /OPT:REF ma non /OPT:ICF, è necessario scrivere il seguente codice:
link /opt:ref /opt:noicf
La specifica di /OPT:ICF non determina l'attivazione dell'opzione /OPT:REF.
ICF[= iterations**] | NOICF**
Utilizzare /OPT:ICF[=iterations] per eseguire la riduzione di COMDAT identici.I COMDAT ridondanti possono essere rimossi dall'output del linker.In iterations viene specificato il numero di volte in cui scorrere i simboli per individuare duplicati.Il numero predefinito di iterazioni è due.Le iterazioni aggiuntive potrebbero individuare duplicati rivelati dalla riduzione effettuata nell'iterazione precedente.Si noti che il comportamento del linker è differente se ICF è attiva per impostazione predefinita con l'opzione /OPT:REF specificata esplicitamente o se invece /OPT:REF,ICF viene specificata in modo esplicito.L'opzione predefinita ICF con /OPT:REF non determina la riduzione di dati di sola lettura,inclusi .rdata, .pdata e .xdata.Tuttavia, l'opzione ICF predefinita con /OPT:REF causa la riduzione di un numero inferiore di funzioni quando si creano immagini per Itanium e x64 poiché le funzioni in questi moduli presentano maggiore dipendenza da dati di sola lettura, quali .pdata e .xdata.Per ottenere la funzionalità completa di ICF, specificare /OPT:ICF in modo esplicito.
Le funzioni vengono inserite nei COMDAT con l'opzione del compilatore /Gy e i dati const vengono inseriti nei COMDAT.Per un esempio su come specificare i dati per la riduzione, vedere selectany.
ICF è attivata per impostazione predefinita se REF è attiva e deve essere attivata in modo esplicito in una build di debug.È possibile specificare NOICF se è specificata REF.
[!NOTA]
/OPT:ICF può comportare l'assegnazione dello stesso indirizzo a funzioni differenti o a membri dati di sola lettura (variabili const compilate con /Gy).Di conseguenza, /OPT:ICF può interrompere un programma che dipende dall'indirizzo di funzioni o di membri dati di sola lettura differenti.Per ulteriori informazioni, vedere /Gy (Attiva collegamento a livello di funzione).
Note
Con le ottimizzazioni viene in genere ridotta la dimensione dell'immagine e aumentata la velocità del programma, aumentando però anche i tempi necessari per il collegamento.
È possibile utilizzare l'opzione /VERBOSE per verificare le funzioni rimosse da /OPT:REF e le funzioni ridotte da /OPT:ICF.
Per impostare l'opzione del linker nell'ambiente di sviluppo di Visual Studio
Aprire la finestra di dialogo Pagine delle proprietà del progetto.Per informazioni dettagliate, vedere Impostazione delle proprietà dei progetti Visual C++.
Selezionare la cartella Linker.
Fare clic sulla pagina delle proprietà Ottimizzazione.
Modificare una delle seguenti proprietà:
Attiva riduzione COMDAT
Ottimizza per Windows 98
Riferimenti
Per impostare l'opzione del linker a livello di codice
- Vedere le proprietà EnableCOMDATFolding e OptimizeReferences.