我正在寻找一种将运行时间存储在 R 中的变量中的方法。在 MATLAB 中,可以执行以下操作:
抽动;
...
x=toc;
然后将运行时间存储在变量 x 中。我尝试使用来自 MATLAB 包的 R 中的 tic() toc() 函数做同样的事情,但没有成功。此外,我也看不到如何使用 R 的 system.time() 函数来做到这一点。非常感谢这里的任何帮助。
我正在寻找一种将运行时间存储在 R 中的变量中的方法。在 MATLAB 中,可以执行以下操作:
抽动;
...
x=toc;
然后将运行时间存储在变量 x 中。我尝试使用来自 MATLAB 包的 R 中的 tic() toc() 函数做同样的事情,但没有成功。此外,我也看不到如何使用 R 的 system.time() 函数来做到这一点。非常感谢这里的任何帮助。
更类似于tic
并且toc
有时更方便,例如循环中的状态消息:
start <- Sys.time ()
do.something ()
Sys.time () - start
使用内置system.time
函数:
tm1 <- system.time(
{
#your code here
})
或者,或者包中的benchmark
函数rbenchmark
:
tm2 <- benchmark(
{
#your code here
}, replications=1)
或者您可以按照“tictoc”包中的说明进行操作。
tic("timer")
1+1
toc(log = TRUE, quiet = TRUE)
log.txt <- tic.log(format = TRUE)
tic.clearlog()
然后将您的输出存储在 log.txt 中。如果您只想要以秒为单位的时间,您可以unlist(log.txt)
将其作为字符串进行分析。
干杯,
tictoc包实现了这个确切的功能,因此顺序或嵌套时序的时序存储在一个列表中并用于后续分析。
例如,要对循环的每次迭代进行计时并稍后分析结果,请使用该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)
以原始格式提取包含测量值的列表。
log.lst <- tic.log(format = FALSE)
由于数据已经提取,请清除 tictoc 日志。
tic.clearlog()
将列表元素转换为计时。列表的每个元素都有一个开始 ( tic
) 和结束 ( toc
) 时间戳。
timings <- unlist(lapply(log.lst, function(x) x$toc - x$tic))
计算平均循环时间。
mean(timings)
# [1] 1.001
打印文本输出 - 请注意前缀是x
.
writeLines(unlist(log.txt))
# 1: 1.002 sec elapsed
# 2: 1 sec elapsed
# 3: 1.002 sec elapsed
# 4: 1.001 sec elapsed
# 5: 1.001 sec elapsed
# 6: 1.001 sec elapsed
# 7: 1.001 sec elapsed
# 8: 1.001 sec elapsed
# 9: 1.001 sec elapsed
# 10: 1 sec elapsed