2009-12-09 13 views
18

Mi interés principal es mover el código de los archivos de encabezado a los archivos de origen (para el desacoplamiento), pero manteniendo el mismo rendimiento para las cosas en línea.¿Alguien tiene experiencia con LTO (C++) de gcc?

No estoy seguro de por dónde empezar, ¿podría alguien explicar qué hacer?

+1

Quizás podrías ampliar lo que quieres decir con LTO? –

+6

¿Optimización del tiempo de enlace? –

Respuesta

4

Hemos realizado experimentos muy limitados. En nuestro caso, las ganancias en el rendimiento fueron bastante negativas, pero como ya nos habíamos ocupado de tener una buena línea, eso no es extremadamente sorprendente.

Sin embargo, habilitar LTO provocó un gran aumento en el consumo de memoria de GCC, básicamente haciendo imposible la compilación paralela en nuestras máquinas de desarrollo de 4 CPU/4 GB, por lo que suspendimos el experimento y estamos esperando versiones futuras para intentarlo nuevamente.

+1

eso es triste; LTO hace que C sea mucho más útil, imo; actualmente, a menudo es imposible utilizar punteros opacos porque necesita las definiciones completas para las funciones en línea – Christoph

+0

¿Ha probado la opción '-fwhopr' para reducir el consumo de memoria? – osgx

+2

¿Hay alguna actualización al respecto? ¿Lo has intentado de nuevo todavía? El registro de cambios de GCC 4.7.0 indica que se han realizado mejoras significativas (el ejemplo que dan es construir Firefox utilizando LTO, con GCC 4.7 que requiere 3 GB para eso, donde las versiones anteriores requerían 8 GB) –

5

Hice algunas pruebas en Firefox y LTO mostrando el uso de la memoria, tiempos de compilación y tiempos de ejecución At my blog comparando también con LLVM. LTO se está desarrollando rápidamente, GCC 4.9 tiene tarifas considerablemente mejores que las versiones anteriores. No siempre es obvio cómo hacerlo funcionar correctamente para una aplicación determinada, el texto describe los principales problemas que puede encontrar (falta de un complemento de enlazador, utilizando archivos LTO gruesos y tirando la parte LTO al enlace y otros)

Cuestiones relacionadas