Condividi tramite


/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

  1. Aprire la finestra di dialogo Pagine delle proprietà del progetto. Per informazioni dettagliate, vedere Impostazione delle proprietà dei progetti Visual C++.

  2. Selezionare la cartella Linker.

  3. Fare clic sulla pagina delle proprietà Ottimizzazione.

  4. Modificare una delle seguenti proprietà:

    • Attiva riduzione COMDAT

    • Ottimizza per Windows 98

    • Riferimenti

Per impostare l'opzione del linker a livello di codice

Vedere anche

Riferimenti

Impostazione delle opzioni del linker

Opzioni del linker