miércoles, 28 de octubre de 2009

Bash: Medir tiempos de ejecución con time

Para medir los tiempos de ejecución en Bash podemos usar el comando time. Su sintaxis es así
time comando_a_ejecutar

Por ejemplo podriamos usar:
time ls -l

y la salida sería
real 0m0.006s
user 0m0.000s
sys 0m0.004s

Si queremos redirigir la salida, el comando time no la imprime por la salida estandar (out) si no por la err. Podemos guardar la salida de time en un archivo con la siguiente sintaxis
(time ls) 2> time.txt

Del mismo modo podemos realizar redirecciones más avanzadas almacenando la salida en un sitio y el time en otro. En el ejemplo medimos el tiempo de un bucle for usando time, almacenando el time en el archivo time.txt y la salida estandar en el archivo salida.txt
#!/bin/bash
time (for i in $(seq 1 5); do
echo $i;
done ) 2>> time.txt 1> salida.txt

Si queremos que todo vaya al mismo sitio podemos usar lo siguiente:
#!/bin/bash
time (for i in $(seq 1 5); do
echo $i;
done ) > salida.txt 2>&1

Si queremos suprimir alguna de las salidas usaremos como destino /dev/null

Relacionado:
http://dieguz2.blogspot.com/2007/03/como-redireccionar-stdout-y-stderr.html

No hay comentarios: