¿Cómo cronometro un comando específico?


68

(El equivalente de Linux de TimeThis.exe)

Algo como:

timethis wget foo.com
Receiving foo.com  
...

wget foo.com took 3 seconds.

Respuestas:


95

Prueba solo en timelugar de timethis.

Aunque tenga en cuenta que a menudo hay una versión de tiempo integrada de shell y una versión binaria, que dará resultados en diferentes formatos:

$ time wget -q -O /dev/null https://unix.stackexchange.com/

real    0m0.178s
user    0m0.003s
sys     0m0.005s

vs

$ \time wget -q -O /dev/null https://unix.stackexchange.com/
0.00user 0.00system 0:00.17elapsed 4%CPU (0avgtext+0avgdata 0maxresident)k
0inputs+0outputs (0major+613minor)pagefaults 0swaps

A diferencia de su programa "timethis", obtiene tres valores de vuelta. Eso se desglosa en Qué es "hora del sistema" cuando se usa "hora" en la línea de comandos , pero en resumen: real significa "hora del reloj de pared", mientras que el usuario y el sistema muestran la hora del reloj de la CPU, dividida entre el código normal y las llamadas al sistema.


26

Al usar el ejecutable en timelugar del shell incorporado, puede especificar el formato de salida y los valores. Por ejemplo, obtenga el tiempo transcurrido real junto con el nombre del comando y los parámetros

/usr/bin/time --format='%C took %e seconds' sleep 3
sleep 3 took 3.00 seconds

Tenga en cuenta que debe especificar la ruta para time, de lo contrario, usará el shell de forma predeterminada.


44
Tenga en cuenta que: el camino es importante. No solo uses 'tiempo' en bash. En cambio, use / usr / bin / time
CodeFarmer

1
¿Cuál es la diferencia si /usr/binestá en su RUTA?
galois

@galois La diferencia es que sin la ruta explícita, timese utilizará la utilidad incorporada del shell .
Kusalananda

También puede usar command timeo \timepara ejecutar la utilidad en lugar del incorporado.
forcefsck

0

@galois: Los diversos shells tienen un puñado de comandos "incorporados" que tienen prioridad sobre cualquier cosa en el camino. Normalmente esto es ventajoso; los incorporados tenderán a ejecutarse más rápido (porque no se llama a un archivo externo) y, por lo general, dan el resultado deseado (es decir, en el caso del comando de tiempo, normalmente no le importa qué versión está utilizando, a menos que quiera usar el " --format "flag).

Por lo tanto, "tiempo" sin ningún carácter especial (como /) para que se vea como una ruta terminará ejecutando el incorporado, independientemente de cómo se vea su RUTA.

Para forzar al shell a usar el comando de tiempo externo, debe proporcionar la ruta

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.