我正在寻找一种在R中的变量中存储运行时间的方法。在MATLAB中,我们可以做一些事情:
抽动;
...
X = TOC;
然后将运行时间存储在变量x中。我尝试使用来自MATLAB包的R中的tic()toc()函数做同样的事情但没有成功。此外,我无法看到如何使用R的system.time()函数来完成此操作。这里的任何帮助非常感谢。
答案 0 :(得分:12)
使用内置system.time
功能:
tm1 <- system.time(
{
#your code here
})
或benchmark
包中的rbenchmark
函数:
tm2 <- benchmark(
{
#your code here
}, replications=1)
答案 1 :(得分:12)
更类似于tic
和toc
,有时也更方便循环中的状态消息:
start <- Sys.time ()
do.something ()
Sys.time () - start
答案 2 :(得分:2)
或者您可以按照'titoc'包中的描述进行操作。
tic("timer")
1+1
toc(log = TRUE, quiet = TRUE)
log.txt <- tic.log(format = TRUE)
tic.clearlog()
然后将输出存储在log.txt中。如果您只想要以秒为单位的时间,您可以unlist(log.txt)
并将其分析为字符串。
干杯,
答案 3 :(得分:2)
tictoc包实现了这个确切的功能,因此顺序或嵌套计时的时间存储在列表中并供后续分析。
例如,要计算循环的每次迭代并稍后分析结果,请使用void get_elems(svOpenArray elems, args...) {
// compute elems based on 'args...'
for (int i = 0; i < svSize(elems); i++)
*(svGetArrElemPtr1(elems, i)) = ...[i];
}
功能。
log
将library(tictoc)
tic.clearlog()
for (x in 1:10) {
# passing x to tic() makes it 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))
打印文本输出 - 请注意前缀是mean(timings)
# [1] 1.001
的值。
x