Просто для полноты: вы можете «симулировать» тик
и ток в R, так что вы можете написать
tic
## do something
toc
без скобок. Хитрость заключается в том, чтобы злоупотреблять print
функция, как показано в Fun: тик и ток в R :
tic <- 1
class(tic) <- "tic"
toc <- 1
class(toc) <- "toc"
print.tic <- function(x, ...) {
if (!exists("proc.time"))
stop("cannot measure time")
gc(FALSE)
assign(".temp.tictime", proc.time(), envir = .GlobalEnv)
}
print.toc <- function(x,...) {
if (!exists(".temp.tictime", envir = .GlobalEnv))
stop("did you tic?")
time <- get(".temp.tictime", envir = .GlobalEnv)
rm(".temp.tictime", envir = .GlobalEnv)
print(res <- structure(proc.time() - time,
class = "proc_time"), ...)
invisible(res)
}
Итак, набрав
tic
Sys.sleep(2)
toc
должно привести к чему-то вроде этого:
user system elapsed
0.000 0.000 2.002
Как я уже сказал, это трюк; system.time
, Rprof
и
пакеты, такие как rbenchmark
- это способ измерения
вычисление времени в R.