Как количественно оценить эффективность различных функций (или подходов)? Я думаю, что-то вроде system.time()
или microbenchmark::microbenchmark()
, но для использования памяти. В этом примере, скажем, я хочу сравнить foo1()
против foo2()
. Я попытался поработать с gc()
, но не могу заставить его работать для сравнения.
set.seed(42)
x = sample(1:100000)
y = sample(1:100000)
foo1 = function(){
S = x + y
return(tail(which(S == max(S)), 1))
}
foo2 = function(){
S = x[1] + y[1]
i = 1
for (ind in 2:length(x)){
if ((x[ind] + y[ind]) > S){
S = x[ind] + y[ind]
i = ind
}
}
return(i)
}
identical(foo1(), foo2())