2010-06-23 8 views
19

hoy me enteré de que la biblioteca estática compilado que estoy trabajando es mucho mayor en el modo de lanzamiento que en depuración. Lo encontré muy sorprendente, ya que la mayoría de las veces sucede exactamente lo contrario (hasta donde puedo decir).modo de lanzamiento mucho más grande que la versión modo de depuración

El tamaño en el modo de depuración es ligeramente superior a 3 MB (es un proyecto bastante grande), pero en el lanzamiento sube a 6,5 ​​MB. ¿Puede alguien decirme cuál podría ser la razón para esto? Estoy usando la configuración habitual de Visual Studio (2008) para un proyecto de biblioteca estática, casi no cambié nada en la configuración de configuración. En versión, estoy usando/O2 y "Tamaño o velocidad de Favor" está establecido en "Ninguno". ¿Podría el/O2 ("Maximizar velocidad") hacer que el .lib final sea mucho más grande que la versión de depuración con toda la información de depuración?

EDIT: Otros detalles:
Depuración:
- toda optimización del programa: No se
- permitir a nivel de función de enlace: No

lanzamiento:
- optimización del programa conjunto: Habilitar conexión en tiempo generación de código
- habilitar la vinculación de nivel de función: Sí

+1

¿Qué hay de "optimización del programa conjunto" y "a nivel de la función de la vinculación de" ajustes en ambas configuraciones? – sharptooth

+0

Actualizó la información. – PeterK

Respuesta

28

La diferencia se debe específicamente a la generación de código de tiempo de enlace. Lea el capítulo Generación de código de tiempo de enlace en Compilers - What Every Programmer Should Know About Compiler Optimizations en MSDN; básicamente dice que con LTCG activado, el compilador produce muchos más datos que se empacan en la biblioteca estática para que el vinculador pueda usar esos datos adicionales para generar un mejor código de máquina mientras vinculando el archivo ejecutable.

Como tiene LTCG desactivado en la configuración de depuración, la biblioteca producida es notablemente más pequeña ya que no tiene esos datos adicionales.

PS: Original Link (not working at 11/09/2015)

+3

¡Gracias, esto explica mucho! – PeterK

0

Personalmente, nunca he visto un relea se PDB ser más grande que un depuración PDB. El mismo trato para LIBS.

1

La optimización podría ser el problema aquí, especialmente creado automáticamente inline funciones serán más grandes, pero más rápido en la versión que la depuración.

Cuestiones relacionadas