← Volver a todos los proyectos

⏱️ Execution Time Analysis

Este proyecto está diseñado para analizar los tiempos de ejecución de comandos o programas en sistemas Unix, calculando estadísticas clave como el promedio y la desviación estándar del tiempo real, usuario y del sistema.

🔍 Descripción del proyecto

El programa utiliza una combinación de Bash y AWK para recopilar datos sobre el tiempo de ejecución de un comando durante múltiples iteraciones. Estos tiempos se analizan para proporcionar información detallada sobre:

  • Tiempo real: El tiempo total que tomó la ejecución.
  • Tiempo de usuario: El tiempo que el procesador dedicó a ejecutar instrucciones de usuario.
  • Tiempo del sistema: El tiempo dedicado por el kernel del sistema operativo.

🛠️ Cómo funciona

  1. Recolectar datos: Un script en Bash ejecuta el comando proporcionado 10 veces usando /usr/bin/time, y guarda los resultados en un archivo temporal llamado /tmp/exetime.
  2. Procesamiento de datos: Un script en AWK (calc.awk) lee el archivo de resultados y calcula:
    • Promedio del tiempo real, usuario y del sistema.
    • Desviación estándar de cada tiempo.
  3. Imprimir estadísticas: Los resultados se imprimen en un formato legible con información sobre los tiempos y sus estadísticas.

📋 Resultados esperados

Al ejecutar el programa, se obtiene un desglose detallado de cada iteración del comando, junto con el promedio y la desviación estándar de los tiempos de ejecución:

Data:
-------------------------
real user sys
2.3 1.2 0.4
2.5 1.3 0.5
-------------------------
Average:
real 2.4
user 1.25
sys 0.45
Standard deviation:
real 0.1
user 0.05
sys 0.05
bash

⚙️ Requisitos

  • Instalar el comando time:
    Para sistemas Debian/Ubuntu: sudo apt-get install time
  • Un entorno Unix compatible con Bash y AWK.

🚀 Cómo ejecutar

  1. Guarda el archivo de AWK (calc.awk) en tu sistema.
  2. Ejecuta el script Bash con el comando que deseas analizar:
    bash speedtest.sh [comando]
    bash
  3. Revisa las estadísticas calculadas por AWK:
    awk -f calc.awk /tmp/exetime
    bash