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.