Benchmark en C++: guía completa con ejemplos prácticos

Entrenador de Python en Línea para Principiantes

Aprende Python fácilmente sin sobrecargarte de teoría. Resuelve tareas prácticas con verificación automática, recibe pistas y escribe código directamente en el navegador, sin instalar nada.

Start Course

Biblioteca benchmark (Google Benchmark) para C++: guía completa

¡Bienvenido a PythonLib! Hoy nos sumergiremos en el mundo del C++ de alto rendimiento y analizaremos la biblioteca benchmark (también conocida como Google Benchmark). Es una herramienta indispensable para todo desarrollador que quiera escribir código rápido y eficiente. En este artículo, cubriremos todo: desde la instalación hasta métodos avanzados y ejemplos reales.

1. ¿Qué es y para qué sirve?

Google Benchmark es una biblioteca de microbenchmarking para el lenguaje C++. Proporciona un marco de trabajo potente y flexible para medir el rendimiento de pequeños fragmentos de código (funciones, algoritmos, contenedores). A diferencia de una simple medición de tiempo con std::chrono, benchmark resuelve automáticamente muchos problemas: calentamiento de caché, eliminación de optimizaciones del compilador, procesamiento estadístico de resultados y mucho más.

¿Para qué sirve? En el desarrollo moderno, el rendimiento suele ser crítico. Sin mediciones precisas, corres el riesgo de:

  • Optimizar lo que no es necesario: Perder tiempo mejorando código que ya es rápido, mientras que el cuello de botella está en otra parte.
  • Empeorar el rendimiento: Hacer cambios que parecen lógicos, pero que en realidad ralentizan el código debido a las características de la arquitectura del procesador o del compilador.
  • Tomar una decisión arquitectónica incorrecta: Elegir un algoritmo o estructura de datos basándose en la intuición, no en los hechos.

La biblioteca benchmark resuelve estos problemas proporcionando una forma fiable, reproducible y estadísticamente sólida de medir el rendimiento. Es utilizada por gigantes como Google, LLVM, Facebook y muchos otros proyectos de código abierto.

2. Instalación

La instalación de la biblioteca benchmark se puede realizar de varias maneras. Veremos las dos más populares: a través del gestor de paquetes vcpkg y la compilación desde el código fuente con CMake.

Método 1: Instalación mediante vcpkg (recomendado)

vcpkg es un gestor de paquetes multiplataforma para C++. Si aún no lo tienes instalado, sigue las instrucciones en el sitio oficial.

Después de instalar vcpkg, ejecuta el comando:

vcpkg install benchmark

Para integrarlo con tu proyecto en CMake, añade en tu CMakeLists.txt:

find_package(benchmark REQUIRED)
target_link_libraries(tu_proyecto benchmark::benchmark)

Método 2: Compilación desde el código fuente

Si prefieres compilar todo manualmente o no tienes vcpkg, sigue estos pasos:

# Clonamos el repositorio
git clone https://github.com/google/benchmark.git
cd benchmark

# Creamos el directorio de compilación
mkdir build && cd build

# Configuramos y compilamos la biblioteca
cmake .. -DCMAKE_BUILD_TYPE=Release -DBENCHMARK_DOWNLOAD_DEPENDENCIES=ON
make -j$(nproc)

# Instalamos (opcional, puedes usar la biblioteca compilada directamente)
sudo make install

Después de la instalación, podrás enlazar la biblioteca indicando las rutas a los archivos de cabecera y a las bibliotecas en tu proyecto.

3. Inicio rápido — ejemplo mínimo funcional

Escribamos un benchmark muy simple que mida la velocidad de la suma de dos números.

#include <benchmark/benchmark.h>

// Función que queremos medir
static void BM_Suma(benchmark::State& state) {
    int a = 5;
    int b = 10;
    int resultado = 0;
    for (auto _ : state) {
        // El código dentro de este bucle será medido
        resultado = a + b;
        // Importante: el compilador podría optimizar 'resultado' si no se usa.
        // Usamos benchmark::Do                    

Recommendations