如何测量 R 中函数的执行时间?
在本文中,我们将学习如何在 R 编程语言中测量函数的执行或运行时间。
方法一:使用Sys.time
为此,首先创建一个运行特定持续时间的示例函数。为此,将持续时间传递给 Sys.sleep()函数。
句法:
startTime <- Sys.time()
func()
endTime <- Sys.time()
在变量startTime 中存储/记录执行前的时间,然后在函数执行后,将时间存储在endTime变量中。为了得到 系统的当前时间我们使用了Sys.time()函数,它不接受任何参数。
然后我们计算执行后时间和执行前时间之间的差异,这给了我们函数的执行时间(运行时间)。
例子:
R
# sample func, whose exec time will be measured
sleep_func <- function() { Sys.sleep(5) }
startTime <- Sys.time()
sleep_func()
endTime <- Sys.time()
# prints recorded time
print(endTime - startTime)
R
# sample func, whose exec time will be measured
sleep_func <- function() { Sys.sleep(5) }
system.time({sleep_func()})
R
library(tictoc)
sleep_func <- function() { Sys.sleep(5) }
tic()
sleep_func()
toc()
R
library(microbenchmark)
sleep_func <- function() { Sys.sleep(0.5) }
microbenchmark(sleep_func())
R
library(rbenchmark)
sleep_func <- function() { Sys.sleep(0.5) }
benchmark(sleep_func())
输出:
Time difference of 5.005118 secs
方法二:使用system.time()
首先,创建一个运行特定持续时间的示例函数。 然后从 system.time( {} ) 的参数中调用sleep_func ,这会测量并返回sleep_func()的执行时间。
system.time({})是一个简单的函数,它将任何 R 表达式或代码或函数作为参数并返回其执行时间。
注意: R 表达式必须包含在“ {} 括号”中 在将其作为参数传递之前。
Syntax: system.time({ R-expression })
Parameters:
R-expression: Any R expression whose execution time is to be measured.
例子:
电阻
# sample func, whose exec time will be measured
sleep_func <- function() { Sys.sleep(5) }
system.time({sleep_func()})
输出:
user system elapsed
0.000 0.000 5.005
方法三:使用tictoc库
我们必须首先安装并导入名为“ tictoc ”的库。然后我们定义运行特定持续时间的示例函数。调用tic ()函数,然后放置任何R表达式或代码或函数(),然后以toc ()函数调用结束。它将打印sleep_func()的执行时间。 tic()函数启动计时器, toc()函数结束计时器,对于这些函数调用之间放置的任何代码,都会测量经过的时间。
例子:
电阻
library(tictoc)
sleep_func <- function() { Sys.sleep(5) }
tic()
sleep_func()
toc()
输出:
5.025 sec elapsed
方法四:使用微基准库
我们必须首先安装并导入名为“microbenchmark”的库,并创建一个示例函数以在特定时间段内工作。
Syntax: microbenchmark( func() )
Parameters: Any R expression or function
将 sleep_func() 作为参数传入microbenchmark()函数。它将打印 sleep_func()函数的基准分数。它首先打印正在使用的单位,然后打印所有详细信息,如最小时间、最大时间、平均值、中位数等。在我们的示例中,单位是毫秒。
R 编程语言中的microbenchmark()函数为准确测量和比较 R 表达式的执行时间提供了基础设施。这个函数通常可以替代我们在中看到的system.time()方法 方法二 因为它提供了更准确的结果。
例子:
电阻
library(microbenchmark)
sleep_func <- function() { Sys.sleep(0.5) }
microbenchmark(sleep_func())
输出:
Unit: milliseconds
expr min lq mean median uq max neval
sleep_func() 500.1297 500.5133 500.9525 500.9391 501.0605 506.7048 100
方法五:使用rbenchmark库
首先,安装并导入名为“rbenchmark”的库。
Syntax: benchmark( func() )
Parameters: Any R expression or function
将 sleep_func() 作为参数传入 benchmark()函数。它将打印 sleep_func()函数的基准分数。
例子:
电阻
library(rbenchmark)
sleep_func <- function() { Sys.sleep(0.5) }
benchmark(sleep_func())
输出:
test replications elapsed relative user.self sys.self user.child sys.child
1 sleep_func() 100 50.08 1 0.02 0 NA NA