¿Qué es un perfilador jerárquico en programación?
Un perfilador jerárquico es una herramienta de análisis de rendimiento que muestra cómo se distribuye el tiempo de ejecución de un programa organizado por la jerarquía de llamadas entre funciones o étodos. A diferencia de un perfilador simple, que solo te indica “esta función tardó X tiempo”, el perfilador jerárquico muestra quién llamó a quién y cuánto tiempo se gastó en cada nivel de la pila de llamadas. Es una de las herramientas más potentes que tienen los programadores para optimizar rendimiento en aplicaciones reales.¿Por qué es “jerárquico”?
Porque representa la ejecución como un árbol de llamadas:main()
├── cargar_datos()
│├── consultar_base_de_datos() ← Lenta
│└── procesar_json()
└── generar_reporte()
└── exportar_pdf() ← Muy lenta
- Cuánto tiempo se gastó en cada función.
- Cuánto tiempo se gastó incluyendo las funciones que llamó (tiempo inclusivo).
- Cuánto tiempo se gastó solo en esa función (tiempo exclusivo).
- Cuántas veces fue llamada cada función.
Ventajas de usar un perfilador jerárquico
Perfiladores en diferentes tecnologías
- Oracle Database: DBMS_HPROF (PL/SQL Hierarchical Profiler) — uno de los más conocidos.
- Python: cProfile + snakeviz o pyinstrument (muestra vista jerárquica).
- Chrome DevTools (JavaScript): El Performance Profiler muestra “Call Tree” (árbol de llamadas).
- Visual Studio (.NET): Hierarchical Profiler.
- Java: VisualVM, JProfiler, YourKit.
- Rust / C++: Herramientas como hprof, perf + flame graphs, etc.
- PHP: XHProf, Xdebug (Profiler + Debugger), Blackfire