R中的测量功能执行时间很简单,但会污染代码。
t0 <- Sys.time()
my_function()
t1 <- Sys.time()
t1-t0
R中是否有一些包或设置记录执行时间(持续时间)和完成时间,并在功能输出后将其打印到屏幕上?
在stata中,这可以通过以下设置来完成:
set rmsg on
之后如果运行一段代码,则使用以下4个命令:
clear
set obs 3
gen x=1
输出窗口将显示:
. clear
r; t=0.00 9:10:28
. set obs 3
number of observations (_N) was 0, now 3
r; t=0.00 9:10:28
. gen x=1
r; t=0.00 9:10:28
.
end of do-file
r; t=0.00 9:10:28
上面我们有执行和完成时间:
clear
和gen
没有屏幕输出)。 end of do-file
和之后的时间信息来表示。 在处理大型数据集时,我发现这非常有用。
有没有办法在R中这样做?
如果没有,创建一个包来实现这个功能会不会太复杂?
答案 0 :(得分:0)
查看microbenchmark
包。 E.g。
microbenchmark::microbenchmark(my_fun(), times = 100L, unit = "ms")
summary(microbenchmark::microbenchmark(my_fun(), times = 100L, unit = "ms"))$uq
使用后一种选项,您可以访问条目以进行进一步的测试。
运行示例:
microbenchmark::microbenchmark(factorial(100), times = 100L, unit = "us")