El paquete tictoc implementa esta funcionalidad exacta, por lo que la sincronización de tiempos secuenciales o anidados se almacena en una lista y para su posterior análisis.
Por ejemplo, para sincronizar cada iteración de un ciclo y analizar los resultados más tarde, use la funcionalidad log
.
library(tictoc)
tic.clearlog()
for (x in 1:10) {
# passing x to tic() makes it a label at time of the matching toc() call.
tic(x)
Sys.sleep(1)
# When log = TRUE, toc() pushes the measured timing to a list
# quiet = TRUE prevents from printing the timing
toc(log = TRUE, quiet = TRUE)
}
buscar a los resultados de toc()
como texto con formato para su impresión.
log.txt <- tic.log(format = TRUE)
Extraiga la lista que contiene las mediciones en formato sin formato.
log.lst <- tic.log(format = FALSE)
Como los datos ya se han extraído, borre el registro de tictoc.
tic.clearlog()
Convierta los elementos de la lista a los tiempos. Cada elemento de la lista tiene una marca de tiempo de inicio (tic
) y final (toc
).
timings <- unlist(lapply(log.lst, function(x) x$toc - x$tic))
Calcule el tiempo promedio de bucle.
mean(timings)
# [1] 1.001
Imprimir la salida de texto - en cuenta que los prefijos son los valores de x
.
writeLines(unlist(log.txt))
# 1: 1.002 sec elapsed
# 2: 1 sec elapsed
# 3: 1.002 sec elapsed
# 4: 1.001 sec elapsed
# 5: 1.001 sec elapsed
# 6: 1.001 sec elapsed
# 7: 1.001 sec elapsed
# 8: 1.001 sec elapsed
# 9: 1.001 sec elapsed
# 10: 1 sec elapsed
pregunta duplicados: http://stackoverflow.com/questions/1716012/stopwatch-function-in-r –
@VincentZoonekynd: Me estaba preguntando cómo almacenarlo. –
@StefanHansen: lo almacena como si guardara cualquier otro valor variable ... '<-'. –