Wie @Justin sagte, die Zeiten werden immer variieren. Vor allem beim ersten Mal ein paar Mal, da sich das Garbage-Collection-System nicht auf Ihren spezifischen Einsatz eingestellt hat. Es kann eine gute Idee sein, R vor dem Messen neu zu starten (und andere Programme zu schließen, stellen Sie sicher, dass das System zu diesem Zeitpunkt nicht nach Viren scannt usw.) ...
Beachten Sie, dass wenn die gemessene Zeit klein ist (Bruchteile von a Zweitens, der relative Fehler wird ziemlich groß sein, versuchen Sie also, das Problem so einzustellen, dass es mindestens eine Sekunde dauert.
Die Pakete benchmark
oder rbenchmark
können helfen.
... aber ich mache normalerweise nur eine For-Schleife um das Problem herum und passe es an, bis es eine Sekunde dauert - und dann laufe ich es auch mehrmals.
Hier ist ein Beispiel:
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
... so nennt es die 100-fachte die relativen Fehler viel reduziert.
Nicht direkt auf Ihre Frage bezogen, aber denken Sie immer daran, dass Sie nicht nur R vs Matlab vergleichen, Sie vergleichen auch Ihre Fähigkeit, Code zu schreiben, der den größten Vorteil beider Sprachen nutzt. – joran
Danke joran! Bin dankbar! –