我正在寻找一种优雅的R chunk定时执行方式,最好在后台自动运行chunk多次。 (Python笔记本中的魔术函数%%timeit正是如此)
我知道有几种方法可以对R函数或R代码组进行计时,并且还有few SO questions。所有方法也在this文章中描述。
但是,他们中的大多数都没有复制r代码,而且有复制选项的代码(如system.time或mircobenchbark)非常适合在函数上使用而不是在一大块代码上。 (或者我可能不理解)
tictoc对我来说效果很好,除了它只给出单次执行的运行时间,但没有选项可以运行1000次并平均运行时间。 (再次是%% timeit)
答案 0 :(得分:0)
使用,可以在循环中记录时间并平均结果。
tictoc
将library(tictoc)
tic.clearlog()
for (x in 1:10) {
# passing x to tic() makes its value to become 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)
}
的结果作为格式化文本获取以进行打印。
toc()
以原始格式提取包含测量值的列表。
log.txt <- tic.log(format = TRUE)
由于数据已被提取,请清除tictoc日志。
log.lst <- tic.log(format = FALSE)
将列表元素转换为计时。
列表的每个元素都有一个开始(tic.clearlog()
)和结束(tic
)时间戳。
toc
计算平均循环时间。
timings <- unlist(lapply(log.lst, function(x) x$toc - x$tic))