【问题标题】:Measuring function execution time and time of completion by default in R在R中默认测量函数执行时间和完成时间
【发布时间】:2017-01-09 08:00:59
【问题描述】:

在 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

上面我们有执行和完成时间:

  • 每个命令命令。这遵循命令自己的输出(请记住cleargen 没有屏幕输出)。
  • hole 命令方块。这通过添加end of do-file 和之后的时间信息来表示。

我发现这在处理大型数据集时非常有用。

有没有办法在 R 中做到这一点?

如果没有,创建一个包来实现这个功能会不会太复杂?

【问题讨论】:

  • 你在使用 RStudio 吗?然后,看看preview version,它包括一个简单的分析选项 - 我认为 - 可以满足您的需求。

标签: r time


【解决方案1】:

查看microbenchmark 包。例如

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")

【讨论】:

    猜你喜欢
    • 2011-09-09
    • 2023-03-09
    • 1970-01-01
    相关资源
    最近更新 更多