R MarkDown / Notebook中的Timing R Chunk(相当于python中的%% timeit)

时间:2017-07-06 11:25:22

标签: r runtime timing chunks timeit

我正在寻找一种优雅的R chunk定时执行方式,最好在后台自动运行chunk多次。 (Python笔记本中的魔术函数%%timeit正是如此)

我知道有几种方法可以对R函数或R代码组进行计时,并且还有few SO questions。所有方法也在this文章中描述。

但是,他们中的大多数都没有复制r代码,而且有复制选项的代码(如system.timemircobenchbark)非常适合在函数上使用而不是在一大块代码上。 (或者我可能不理解)

tictoc对我来说效果很好,除了它只给出单次执行的运行时间,但没有选项可以运行1000次并平均运行时间。 (再次是%% timeit)

1 个答案:

答案 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))