El desarrollador del sistema de compilación build2 presenta una comparativa de rendimiento frente a Ninja, considerado la referencia de velocidad en builds de C++. Para una prueba en igualdad de condiciones eligió Xerces-C++, un parser XML en C++ con 299 unidades de traducción, y realizó una compilación completa desde cero en su equipo. Ninja completó la build en 3,4 segundos, mientras que build2, con la misma configuración, necesitó 3,8 s, un 11 % más lento en configuración estándar. Al desactivar funciones que build2 ofrece por defecto y que Ninja no incorpora —detección de cambios ignorables mediante tokenización y checksum, y compresión en la caché de archivos—, el tiempo bajó a 3,35 s, un 2,2 % más rápido que Ninja (3,4 s). El artículo detalla qué trabajo adicional realiza build2 y que Ninja delega en CMake: generar cabeceras como XercesVersion.hpp durante la build, extraer metadatos del compilador (id, versión, rutas de búsqueda de cabeceras y bibliotecas) o rastrear cambios en rutas de sistema y variables de entorno. En el caso de GCC eso implica 10 invocaciones del compilador solo para descubrir el entorno. El autor defiende que el rendimiento se consigue haciendo las cosas de forma distinta, no solo mejor, y adelanta que detallará los tres principios de diseño que lo explican en próximas entregas.
build2 iguala e incluso supera a Ninja en velocidad de compilación
Fuentes:
Faster Than Ninja
