proc.time
Para medir el tiempo de ejecución de nuestro código en R usamos la función proc.time. Esta función determina el tiempo real y de la CPU (en segundos) desde que el proceso se inició en R.
t <- proc.time() # Inicia el cronómetro
# NUESTRO CODIGO
proc.time()-t # Detiene el cronómetro
Muestra en la consola 3 valores: user, system, y elapsed.
user system elapsed
0.02 0.00 0.09
User time es el tiempo de la CPU dedicado a la ejecución del las instrucciones del proceso. System time es el tiempo de la CPU empleado por el sistema operativo (el núcleo o kernel) siguiendo las instrucciones del proceso (abrir ficheros, iniciar otros procesos o mirar al reloj del sistema, etc.). Elapsed time es el tiempo transcurrido 'real' desde que se inició el proceso.
system.time
Para evaluar una sola expresión de R usamos la función system.time. Esta función llama a la función proc.time, evalúa la expresión y vuelve a llamar a la función proc.time devolviendo la diferencia entre ambas llamadas a proc.time.
system.time(NUESTRA EXPRESIÓN) # Sólo necesita un argumento
# Ejemplo:
system.time(for(i in 1:1e7) x <- 1)
Muestra en la consola los mismos valores que proc.time.
user system elapsed
2.59 0.01 2.60
Notas
Aproximadamente el elapsed time es la suma de los dos anteriores: user time más system time. Pero esto no siempre es así. Por ejemplo, si dos tareas de 15 segundos se ejecutan en paralelo en dos núcleos, el user time computa la suma de las dos: 30 segundos. Mientras que elapsed time no incluye la suma del tiempo de las dos tareas en paralelo, solo el tiempo 'real' que la CPU tardó: 15 segundos. El caso contrario sucede, por ejemplo, si introducimos la expresión Sys.sleep(60) en algún punto de nuestro código. Durante ese tiempo la CPU no será utilizada, 0 segundos, pero el elapsed time computará esos 60 segundos y será mayor que la suma del user time más el system time.
Referencias:
proc.time y system.time
IDRE(UCLA)
Significado de proc.time
User time mayor que elapsed time