2015-12-09 1 views
2

Мне нужно сравнить две функции с точки зрения прошедшего времени. На данный момент я использую следующий код:Истекшее время в R - min, max

system.time(f1()) 
system.time(f2()) 

И если я хочу запустить ту же функцию, несколько раз я использую:

system.time(replicate(10, f1())) 
system.time(replicate(10, f2())) 

Информация, которую я получаю от system.time пользователя, система и пройденное время.

Дело в том, что я бы знал, если я реплицирую функцию, а также минутное и максимальное истекшее время одного вызова.

Как я могу это сделать?

ответ

2

Если вы не ограничены использованием только base пакетов, я бы предложил использовать пакет microbenchmark.

> f1 <- function() 1 
> f2 <- function() 2 
> microbenchmark::microbenchmark(f1(), f2(), times = 10) 
Unit: nanoseconds 
expr min lq mean median uq max neval cld 
f1() 134 195 896.7 309 360 6418 10 a 
f2() 133 138 305.3 189 230 1320 10 a 

Однако, если вы все еще хотите использовать system.time, просто переместить replicate за пределами system.time вызова. Например,

> f1 <- function() sapply(1:100000, identity) 
> times <- replicate(10, system.time(f1())[3]) 
> min(times) 
[1] 0.051 
> max(times) 
[1] 0.057