En la administración de sistemas y el desarrollo de software, a menudo se necesita medir el tiempo para evaluar el rendimiento de una tarea o un programa. Aunque el tiempo se mide en segundos, puede ser difícil de interpretar si el valor es muy grande. Para facilitar su lectura, es útil convertir los segundos a un formato más convencional, como hora:minuto:segundo (HH:MM:SS).

Aquí hay cinco razones por las que sería una buena idea medir el tiempo de los scripts:

  1. Optimización del rendimiento: Al medir el tiempo de ejecución de los scripts, puedes identificar los cuellos de botella y áreas de mejora en tu código. Esto te permite optimizar el rendimiento y reducir el tiempo de ejecución, lo que es especialmente importante en aplicaciones de tiempo crítico o de alto rendimiento.
  2. Comparación de soluciones: A menudo, hay varias formas de abordar un problema en la programación. Al medir el tiempo de ejecución de diferentes soluciones, puedes comparar su eficiencia y elegir la mejor opción en términos de velocidad y rendimiento.
  3. Monitoreo del rendimiento a lo largo del tiempo: Medir el tiempo de ejecución de los scripts de manera regular te permite llevar un registro del rendimiento a lo largo del tiempo. Esto puede ser útil para detectar degradaciones en el rendimiento a medida que se introducen cambios en el código o en el entorno de ejecución, permitiendo así solucionar problemas antes de que se vuelvan críticos.
  4. Establecer expectativas realistas: Al conocer el tiempo de ejecución de tus scripts, puedes establecer expectativas realistas para los usuarios finales y otros miembros del equipo en cuanto a cuánto tiempo tomará completar ciertas tareas. Esto también puede ayudar en la planificación de recursos y en la evaluación de la viabilidad de ciertas características o soluciones.
  5. Identificación de problemas de escalabilidad: Cuando un script se ejecuta con diferentes tamaños de entrada o en diferentes entornos o simplemente la carga de trabajo aumento con el tiempo, el tiempo de ejecución puede variar significativamente. Medir el tiempo de ejecución en estas situaciones te ayuda a identificar problemas de escalabilidad y a tomar decisiones informadas sobre cómo manejar la carga de trabajo y la distribución de recursos en función de la demanda y el rendimiento esperados.

En este artículo, presentamos un script Bash que realiza esta conversión y discutimos cómo puede ser utilizado en otros scripts Bash para medir el tiempo.

El Script

El siguiente script Bash, llamado ‘time.sh’, convierte una cantidad dada de segundos a formato HH MM SS:

#!/bin/bash

function timef() {
    local total_seconds=$1
    local hours=$((total_seconds / 3600))
    local minutes=$(( (total_seconds % 3600) / 60 ))
    local seconds=$((total_seconds % 60))

    if [ $total_seconds -gt 3599 ];  then
        printf "%02dh %02dm %02ds\n" $hours $minutes $seconds
        return
    fi

    if [ $total_seconds -gt 59 ];  then
        printf "%02dm %02ds\n" $minutes $seconds
        return
    fi

    printf "%02ds\n" $seconds
}

El uso y la salida serían algo así, primero la entrada:
timef 59 //Salida: 59s
timef 62 //Salida: 01m 02s
timef 150 //Salida: 02m 30s
timef 3590 //Salida: 59m 50s
timef 3600 //Salida: 01h 00m 00s
timef 3700 //Salida: 01h 01m 40s

Implementación en nuestros scripts

A la hora de implementarlo en nuestros scripts podemos hacerlo de la siguiente forma

source timef.sh

# ... código del script ...

# Ejemplo de medición de tiempo
start_time=$(date +%s)

# ... ejecutar tarea o programa ...

end_time=$(date +%s)
elapsed_seconds=$((end_time - start_time))

# Convertir el tiempo transcurrido a formato HH MM SS
elapsed_time=$(timef $elapsed_seconds)
echo "Tiempo transcurrido: $elapsed_time"

En este ejemplo, utilizamos la función ‘date +%s’ para obtener la hora actual en segundos desde la época Unix (1 de enero de 1970). Luego, ejecutamos la tarea o el programa que queremos medir y obtenemos la hora en segundos nuevamente. Restamos la hora de inicio de la hora de finalización para obtener la cantidad de segundos transcurridos. Finalmente, utilizamos la función ‘timef’ para convertir los segundos transcurridos a formato HH MM SS.

Conclusión

La conversión de segundos a formato hora:minuto:segundo es una tarea común al medir el tiempo en scripts Bash, el script ‘time.sh’ presentado en este artículo ofrece una solución simple y efectiva para realizar esta conversión, al incluir este script en sus propios proyectos, puede mejorar la legibilidad de las mediciones de tiempo y facilitar la evaluación del rendimiento de las tareas y programas ya sea en tiempo de desarrollo como al ser usando en producción, el medir el tiempo de ejecución en producción nos permite detectar cambios a lo largo del tiempo que pueden indicar problemas o detalles que debemos revisar.

2 comments

  1. Una genialidad !!! Era lo que estaba buscando !!! Lo implemente en un script que tada hora y pico sin problemas ! Muchas gracias por el aporte.

Leave a Reply

Your email address will not be published. Required fields are marked *

Discover more from Alvaro De León

Subscribe now to keep reading and get access to the full archive.

Continue reading