Pakiet tictoc wdraża dokładnie tę funkcjonalność, a więc czas kolejnego lub zagnieżdżonych czasy są przechowywane na liście i do następnej analizy.
Na przykład od czasu do każdej iteracji pętli i analizy wyników później, użyj funkcji 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)
}
Fetch wyniki toc()
jako sformatowanego tekstu do druku.
log.txt <- tic.log(format = TRUE)
Wyodrębnij listę zawierającą pomiary w formacie nieprzetworzonym.
log.lst <- tic.log(format = FALSE)
Ponieważ dane są już wyodrębnione, wyczyścić dziennik tictoc.
tic.clearlog()
Konwertuj elementy listy na taktowanie. Każdy element listy ma znacznik czasu rozpoczęcia (tic
) i końca (toc
).
timings <- unlist(lapply(log.lst, function(x) x$toc - x$tic))
Obliczyć średni czas pętli.
mean(timings)
# [1] 1.001
Drukuj wyjście tekst - zauważ, że prefiksy są wartościami 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
duplikatów pytanie: http://stackoverflow.com/questions/1716012/stopwatch-function-in-r –
@VincentZoonekynd: Pytałem, jak je przechowywać. –
@StefanHansen: przechowujesz go tak, jak przechowujesz dowolną inną wartość zmiennej ... '<-'. –