c++ gcc pgo lto

c++ - gcc flags



¿Qué información recopila GCC Profile Guided Optimization(PGO) y qué optimizaciones usan? (2)

¿Qué información recopila GCC cuando -fprofile-generate y qué optimización de hecho usa la información recopilada (al configurar el -fprofile-use )?

Necesito citas aquí. He buscado por un tiempo pero no encontré nada documentado.

¡La información con respecto a la optimización del tiempo de enlace (LTO) sería una ventaja! = D



"Lo que todo programador debería saber sobre la memoria" por Ulrich Drepper https://people.freebsd.org/~lstewart/articles/cpumemory.pdf http://www.akkadia.org/drepper/cpumemory.pdf

En la sección 7.4

  • La compilación con --profile-generate genera el archivo .gcno para cada archivo de objeto. (el mismo archivo que se usa para los informes de cobertura de gcov)
  • entonces debe ejecutar algunas pruebas, durante el tiempo de ejecución registra datos de cobertura en archivos .gcda
  • volver a compilar con --profile-use: recopilará los datos de cobertura e inferirá si es probable una rama (__builtin_expect (.., 1) o improbable (__builtin_expect (.., 0)

El resultado debería ejecutarse más rápido, ya que debería ser mejor para captar previamente el código en la caché de instrucciones del procesador.