在R中是否有衡量函数执行时间的标准化方法?

显然我可以用系统。时间,然后取它们的差异,但我想知道是否有一些标准化的方法或功能(不想发明轮子)。


我似乎记得我曾经用过如下的东西:

somesysfunction("myfunction(with,arguments)")
> Start time : 2001-01-01 00:00:00  # output of somesysfunction
> "Result" "of" "myfunction"        # output of myfunction
> End time : 2001-01-01 00:00:10    # output of somesysfunction
> Total Execution time : 10 seconds # output of somesysfunction

当前回答

度量执行时间的一个稍微好一点的方法是使用rbenchmark包。这个包(很容易)允许您指定复制测试的次数,以及相对基准测试应该是多少次。

另见stats.stackexchange上的相关问题

其他回答

另一种简单但非常强大的方法是使用包profvis。它不仅测量代码的执行时间,还为您提供了执行每个函数的钻取。它也可以用于Shiny。

library(profvis)

profvis({
  #your code here
})

点击这里查看一些例子。

library(rbenchmark)

sleep_func <- function() { Sys.sleep(0.5) }

benchmark(sleep_func())

out:

 test replications elapsed relative user.self sys.self user.child sys.child

1 sleep_func()          100   50.08        1      0.02        0         NA        NA

编译以上所有的答案,我想到使用这些简化的tic toc函数

tic <- function(){ start.time <<- Sys.time() }
toc <- function(){ round(Sys.time() - start.time) }

用作:

tic()
Sys.sleep(3)
toc()

哪些印刷品:

时间差3秒

内置函数system.time()将执行此操作。

使用like: system。Time (result <- myfunction(with, arguments))

正如Andrie所说,system.time()工作正常。对于短函数,我更喜欢在其中放入replication ():

system.time( replicate(10000, myfunction(with,arguments) ) )