在R中存储tic toc值

时间:2012-06-05 07:57:56

标签: r

我正在寻找一种在R中的变量中存储运行时间的方法。在MATLAB中,我们可以做一些事情:

  

抽动;
  ...
  X = TOC;

然后将运行时间存储在变量x中。我尝试使用来自MATLAB包的R中的tic()toc()函数做同样的事情但没有成功。此外,我无法看到如何使用R的system.time()函数来完成此操作。这里的任何帮助非常感谢。

4 个答案:

答案 0 :(得分:12)

使用内置system.time功能:

tm1 <- system.time(
{
  #your code here
})

benchmark包中的rbenchmark函数:

tm2 <- benchmark(
{
  #your code here
}, replications=1)

答案 1 :(得分:12)

更类似于tictoc,有时也更方便循环中的状态消息:

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