Clase 05 Profiling¶
¿Que es profiling?
- Identificar cuello de botella (Instrucciones que lo hacen lento) y que potencialmente se pueden mejorar
- Consumo memoria, CPU, recursos I/O
- El objetivo es buscar areas de posible mejora
Pasos para optimizar
- Ejecutar pruebas: Nos ayudan a encontrar los cuellos de botella
- Refactorización
- Perfilado: Identificar las partes del código que dan mayor problema en la ejecución
80% problemas esta dado por el 20% del codigo
Herramientas
- Temporizadores: Toman tiempos, proceso o del sistema operativo
- Perfiladores deterministicos: La ejecución del programa
- Perfiladores estocasticos: Toman una parte y estima el tiempo total.
Ambientes virtuales en Python¶
Linux¶
virtualenv venv
source venv/bin/activate
pip list
pip install numpy
WIndows¶
Hacer en Git
python -m pip install virtualenv ;;Gente terca en Windows
python -m virtualenv venv
source venv/Scripts/activate
Perf¶
Es una utilidad de Linux para perfilar programas (ejecuando) o que esten cargado (requerimos permisos de root)
perf record <ejecuacion>
perf report