Как @Justin сказал, времена всегда будут меняться. Особенно в первый раз пару раз, так как система сбора мусора не приспособилась к вашему конкретному использованию. Может быть хорошей идеей перезапустить R перед измерением (и закрыть другие программы, убедиться, что система не сканирует на вирусы в это время и т. Д.).
Обратите внимание, что если измеренное время мало (доли вторая), относительная ошибка будет довольно большой, поэтому постарайтесь отрегулировать проблему, чтобы она занимала не менее секунды.
Пакеты benchmark
или rbenchmark
могут помочь.
... но я обычно просто делаю цикл вокруг проблемы и настраиваю его, пока он не займет секунду или около того, - и затем я запускаю его несколько раз.
Вот пример:
f <- function(x, y) {
sum <- 1
for (i in seq_along(x)) sum <- x[[i]] + y[[i]] * sum
sum
}
n <- 10000
x <- 1:n + 0.5
y <- -1:-n + 0.5
system.time(f(x,y)) # 0.02-0.03 secs
system.time(for(i in 1:100) f(x,y)) # 1.56-1.59 secs
... так называть его в 100 раз уменьшить относительную погрешность много.
Непосредственно, связанный с вашим вопросом, но всегда помните, что вы не просто сравниваете R vs Matlab, вы также сравниваете свою способность писать код, который максимально использует оба языка. – joran
Спасибо, Джоран! Ценить это! –