Regresión de optimización de Clang: las funciones en línea perjudican el rendimiento en un benchmark de C++

2025-02-19

Un benchmark de C++ reveló una regresión de rendimiento en la optimización de funciones en línea de Clang. Cuando la función `increment` se incluyó en línea, los fallos en la predicción de ramas provocaron una disminución del rendimiento de aproximadamente 5 veces en comparación con la versión no en línea. `perf stat` confirmó que las predicciones incorrectas de ramas fueron las culpables. Curiosamente, la compilación con el conjunto de herramientas Zig mejoró significativamente el rendimiento, lo que sugiere una posible regresión en Clang 19. El problema se ha informado en el repositorio de Clang/LLVM, y la investigación inicial apunta a una compensación entre los pasos de optimización SROA y SimplifyCFG.

Desarrollo