calcular el tiempo de ejecución de un proceso de manera más eficiente

calcular el tiempo de ejecución de un proceso de manera más eficiente

Necesito obtener el tiempo de ejecución de un programa tan pronto como se cierra y se me ocurrió esto

start=`date +"%M"`
while [ `pgrep vlc` ];do
        echo vlcopen > /dev/null
done
stop=`date +"%M"`

[ $stop -lt $start ]&&time=$[ 60-$start+$stop ]||time=$[ $stop-$start ]
echo $time > time.txt

y hace el trabajo, pero es muy ineficiente y requiere mucho uso de la taza, ¿cómo hago esto de manera más eficiente?

Respuesta1

Una opción es utilizartime

Nota: Bash tiene una palabra clave, timeasí que si la tienes:

time some command

ese es usado, SHELL_GRAMMAR: fiesta

Lo que timese encuentra en el hombre timesuele ser algo así como/usr/bin/time

$ type -t time
keyword

Punto principal al utilizar elno bashEl tiempo son características como -v(GNU time).

Ver también:¿Qué significan "real", "usuario" y "sys" en la salida de time(1)?

Respuesta2

Utilizar elSECONDSvariable de bash:

SECONDS=0

# do stuff here, such as
sleep 5

duration=$SECONDS

echo "The stuff took $duration seconds to complete"

La eficiencia se gana eliminando la necesidad de generar procesos externos.

información relacionada