time (Unix)
El comando time (del inglés time, tiempo) es un comando del sistema operativo Unix y derivados. Se utiliza para determinar la duración de ejecución de un determinado comando.
Uso
Para utilizar el comando, simplemente hay preceder a cualquier comando de la palabra time
, como por ejemplo:
time ls
Al ejecutar el comando, time
informará de cuanto tiempo llevó ejecutar el comando ls
en términos de tiempo de CPU de usuario, tiempo de CPU del sistema y tiempo real. El formato de salida varía entre diferentes versiones del comando, dando algunas versiones estadísticas adicionales como en el siguiente ejemplo:
$ time host wikipedia.org
wikipedia.org has address 208.80.152.201
wikipedia.org has IPv6 address 2620:0:860:ed1a::1
wikipedia.org mail is handled by 10 mchenry.wikimedia.org.
wikipedia.org mail is handled by 50 lists.wikimedia.org.
real 0m0.550s
user 0m0.004s
sys 0m0.008s
$
Tiempo de usuario vs. tiempo de sistema
El término «tiempo de CPU de usuario» puede inducir a errores en un principio. Para ser claros, el tiempo total de CPU es la combinación de la cantidad de tiempo que la CPU (o CPUs) tarda en realizar alguna acción para un programa y la cantidad de tiempo que la CPU (o CPUs) tarda en realizar llamadas al sistema para el kernel en el nombre del programa. Cuando un programa recorre una matriz, se acumula tiempo de CPU de usuario. Por el contrario, cuando un programa ejecuta una llamada al sistema, como por ejemplo un exec
o un fork
, se está acumulando tiempo de CPU del sistema.
Tiempo real vs. tiempo de CPU
El término «tiempo real» en este contexto se refiere al tiempo transcurrido, como si fuese un cronómetro. El tiempo de CPU total (tiempo de usuario + tiempo de sistema) puede ser mayor o menor que ese valor. Puesto que un programa puede pasar algún tiempo de espera y no ejecutar nada (ya sea en modo usuario o modo sistema) el tiempo real puede ser mayor que el tiempo total de CPU. Puesto que un programa puede bifurcar hijos cuyo tiempo de CPU (tanto de usuario como de sistema) es sumado a los valores mostrados por el comando time
, el tiempo de CPU total puede ser mayor que el tiempo real.