Herramientas de análisis de rendimiento en C++

Configuración del entorno en Ubuntu

Para realizar pruebas de rendimiento en aplicaciones C++, se pueden utilizar herramientas como valgrind para la recopilación de datos y kcachegrind para la visualización.

Preparación del editor Vim

Modifique el archivo de configuración de Vim ubicado en /etc/vim/vimrc para adaptar la experiencia de edición:

set number          " Mostrar números de línea
set autoindent      " Sangría automática
set tabstop=4       " Definir tabulación como 4 espacios
set expandtab       " Usar espacios para sangría en lugar de tabulaciones
set list            " Caracteres ocultos visibles
set showmatch       " Resaltar paréntesis y llaves coincidentes
set shiftwidth=6    " Desplazamiento de sangría de 6 caracteres

Aplicar los cambios ejecutando source /etc/vim/vimrc o reiniciando el editor.

Instalación de herramiantas de compilación

Actualice los repositorios e instale el compilador g++:

sudo apt update
sudo apt install g++

Creación de código de ejemplo

El siguiente código C++ implementa funciones para sumar rangos numéricos, proporcionando una carga de trabajo para el aálisis:

int sumar_rango(int inicio, int fin) {
    int acumulado = 0;
    for (int contador = inicio; contador < fin; ++contador) {
        acumulado += contador;
    }
    return acumulado;
}

int sumar_0_a_100000() {
    return sumar_rango(0, 100000);
}

int sumar_0_a_200000() {
    return sumar_rango(0, 200000);
}

int main() {
    sumar_0_a_100000();
    sumar_0_a_200000();
    return 0;
}

Compile el código con opciones de depuración y sin optimizaciones:

g++ -g -O0 -o programa_ejemplo ejemplo.cpp

Uso de valgrind para la recopilación de datos

Ejecute valgrind con el módulo callgrind para obtener métricas de ejecución:

valgrind --tool=callgrind --dump-instr=yes ./programa_ejemplo

Esto generará un archivo de datos en el directorio actual. Para análisis de aplicaciones multihilo, añada --separate-threads=yes.

Visualización con kcachegrind

Instale kcachegrind y ábralo con el archivo de datos de valgrind:

sudo apt install kcachegrind
kcachegrind callgrind.out.12345

La interfaz mostrará gráficos de llamadas y estadísticas de instrucciones.

Geenración de diagramas de flujo

Combine gprof2dot con Graphviz para crear representaciones visuales del grafo de llamadas:

python3 gprof2dot.py -f callgrind callgrind.out.12345 | dot -Tpng -o grafico.png

Compatibilidad de plataformas

valgrind ofrece el mejor rendimiento en arquitecturas x86 y amd64. Su soporte para PowerPC, ARM, Thumb o MIPS puede ser limitado.

Etiquetas: valgrind kcachegrind C++ perfilado de rendimiento linux

Publicado el 6-28 03:55