Los métodos tradicionales para mejorar la eficacia del compilador a través del perfilado se realizan mediante herramientas de análisis de rendimiento. Sin embargo, la forma en que los datos de las herramientas pueden ser útiles en la optimización aún depende del compilador que utilice. Por ejemplo, GCC es un marco en el que se trabaja para producir compiladores para diferentes dominios. Proporcionar un mecanismo de creación de perfiles en dicho marco de compilación será extremadamente difícil.
Podemos confiar en los datos estadísticos para hacer cierta optimización. Por ejemplo, GCC desenrolla un bucle si el recuento de bucles es menor que una constante (digamos 7). Cómo arregla la constante se basará en el resultado estadístico del tamaño del código generado para la arquitectura de destino diferente.
Las optimizaciones guiadas por perfil rastrean las áreas especiales de la fuente. Los detalles con respecto a los resultados de ejecución anteriores deben almacenarse, lo que es una tara. La entrada, por otro lado, requiere una representación estadística de la aplicación de destino que puede usar el compilador. Entonces, el nivel de complejidad aumenta con el número de entradas y salidas diferentes. En resumen, decidir la optimización guiada por el perfil requiere una recopilación de datos extrema. La automatización o incorporación de tal perfil en la fuente necesita una supervisión cuidadosa. De lo contrario, todo el resultado estará mal y en nuestro esfuerzo por nadar, en realidad nos ahogaremos.
Sin embargo, la experimentación en este sentido está en curso. Solo echa un vistazo al POGO.
Creo que la palabra que está buscando es 'optimización guiada por perfil'. No conozco ningún proyecto importante que publique mediciones antes y después, pero sí sé que Firefox admite PGO en su sistema de compilación. Ver https://developer.mozilla.org/en/Building_with_Profile-Orimage_Optimization – int3
Informalmente, he visto + 10% en bases de código incrustado pero nunca he visto ningún estudio formal de PGO. –