打印脚本在R中运行的时间

时间:2015-08-19 15:44:03

标签: r time

对于简单的自制基准测试,我想在我的R脚本中添加一个计时器,以便我知道它运行了多长时间。这是一个在大量数据上释放的脚本,因此可能需要一个多小时才能完成。因此,我正在寻找一种方法,告诉我脚本运行的确切时间。

我得到的想法是:

old = getCurrentTime()

# Do the rest of my script

(new = getCurrentTime() - old)

我不知道这是否有意义,但似乎最好的方法是在没有计数器在后台运行的情况下,通过比较脚本的开始时间和时间与结束来打印区别。但是,我不确定如何在R中获取时间,获得差异,并在hh:mm:ss中对其进行格式化。

2 个答案:

答案 0 :(得分:8)

您可以使用Sys.time()

old <- Sys.time() # get start time

# some code
#...

# print elapsed time
new <- Sys.time() - old # calculate difference
print(new) # print in nice format

然而,还有microbenchmark包用于使用多次试验等更复杂/准确的计时。

答案 1 :(得分:2)

您的一般方法是正确的,并且可能是实现此目的的最常规方法,无论编程语言如何。但是,减去两个difftime对象将为您提供类hms_span <- function(start, end) { dsec <- as.numeric(difftime(end, start, unit = "secs")) hours <- floor(dsec / 3600) minutes <- floor((dsec - 3600 * hours) / 60) seconds <- dsec - 3600*hours - 60*minutes paste0( sapply(c(hours, minutes, seconds), function(x) { formatC(x, width = 2, format = "d", flag = "0") }), collapse = ":") } 的对象,其中自动选择度量单位(取决于差异的大小),而不是“HH:MM:SS” “你正在寻找的格式。编写函数返回此格式非常简单,例如

之类的东西
(t0 <- Sys.time() - 3600 * 8.543)
#[1] "2015-08-19 03:48:36 EDT"
(t1 <- Sys.time())
#[1] "2015-08-19 12:19:24 EDT
R> hms_span(t0, t1)
#[1] "08:32:34"
import static java.lang.System.out;
import java.text.*;
import java.util.*;
import java.lang.*;

public class Dates 
{
    // --- add methods here to make the program work --- //

// ATTEMPTED SOLUTION FOR nameFormat METHOD!!!!!!