Domanda

Oggi ho scoperto che la libreria statica compilata su cui sto lavorando è molto più grande in Stampa Modalità che in Debug . L'ho trovato molto sorprendente, poiché la maggior parte del tempo avviene l'esatto contrario (per quanto posso dire).

La dimensione in modalità di debug è leggermente più di 3 MB (la sua un gran progetto), ma nel comunicato si va fino a 6,5 ??MB. Qualcuno può dirmi quello che potrebbe essere la ragione di questo? Sto usando la solita Visual Studio (2008) le impostazioni per un progetto di libreria statica, cambiato quasi nulla nelle impostazioni di configurazione di build. In uscita, sto usando / O2 e "dimensione favore o la velocità" è impostato su "Nessuno". Potrebbe la ( "velocità Massimizza") / O2 causa il lib finale per essere così molto più grande rispetto alla versione di debug con tutte le informazioni di debug in esso?

Modifica Informazioni aggiuntive:
Debug:
- Ottimizzazione intero programma: No
- abilitare livello di funzione di collegamento: No

rilascio:
- Ottimizzazione intero programma: Attiva link-tempo di generazione di codice
- abilitare livello di funzione di collegamento: Sì

È stato utile?

Soluzione

La differenza è proprio a causa della generazione di codice di collegamento in tempo. Leggere il capitolo Link-Time Code Generation in compilatori - Ciò che ogni programmatore dovrebbe conoscere circa compilatore Ottimizzazioni su MSDN - è in sostanza dice che con LTCG attivato il compilatore produce molti più dati che viene compresso nella libreria statica in modo che il linker può utilizzare che i dati aggiuntivi per la generazione di codice migliore macchina, mentre in realtà collega il file eseguibile <. / p>

Dal momento che hai LTCG fuori nella configurazione di debug della libreria prodotta è notevolmente più piccola in quanto non ha che i dati in più.

PS: originale Link (non funziona a 2015/11/09)

Altri suggerimenti

L'ottimizzazione potrebbe essere il problema qui, funzioni inline particolare creati automaticamente saranno più grandi ma più veloce nel rilascio di debug.

Personalmente non ho mai visto un PPB rilascio sia più grande di un progetto preliminare di bilancio di debug. Stessa cosa per LIBS.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top