358 Stimmen

Messung der Ausführungszeit von Funktionen in R

Gibt es in R eine standardisierte Methode zur Messung der Ausführungszeit einer Funktion?

Offensichtlich kann ich die system.time vor und nach der Ausführung und nehmen dann die Differenz davon, aber ich würde gerne wissen, ob es eine standardisierte Methode oder Funktion gibt (ich möchte das Rad nicht erfinden).


Ich glaube mich zu erinnern, dass ich einmal etwas Ähnliches wie das Folgende verwendet habe:

somesysfunction("myfunction(with,arguments)")
> Start time : 2001-01-01 00:00:00  # output of somesysfunction
> "Result" "of" "myfunction"        # output of myfunction
> End time : 2001-01-01 00:00:10    # output of somesysfunction
> Total Execution time : 10 seconds # output of somesysfunction

41voto

Außerdem gibt es proc.time()

Sie können in der gleichen Weise verwenden wie Sys.time aber es liefert ein ähnliches Ergebnis wie system.time .

ptm <- proc.time()
#your function here
proc.time() - ptm

der Hauptunterschied zwischen der Verwendung

system.time({ #your function here })

ist, dass die proc.time() Methode führt dennoch Ihre Funktion aus, anstatt nur die Zeit zu messen... und nebenbei bemerkt, ich verwende gerne system.time con {} innen, so dass man eine Reihe von Dingen hineinlegen kann...

34voto

Anton Punkte 1398

Das Paket "tictoc" gibt Ihnen eine sehr einfache Möglichkeit, die Ausführungszeit zu messen. Die Dokumentation ist in: https://cran.fhcrc.org/web/packages/tictoc/tictoc.pdf .

install.packages("tictoc")
require(tictoc)
tic()
rnorm(1000,0,1)
toc()

Um die verstrichene Zeit in einer Variablen zu speichern, können Sie Folgendes tun:

install.packages("tictoc")
require(tictoc)
tic()
rnorm(1000,0,1)
exectime <- toc()
exectime <- exectime$toc - exectime$tic

23voto

TPArrow Punkte 1442

Obwohl andere Lösungen für eine einzelne Funktion nützlich sind, empfehle ich das folgende Stück Code, das allgemeiner und effektiver ist:

Rprof(tf <- "log.log", memory.profiling = TRUE)
# the code you want to profile must be in between
Rprof (NULL) ; print(summaryRprof(tf))

15voto

gianni Punkte 181

Eine weitere einfache, aber sehr leistungsfähige Möglichkeit, dies zu tun, ist die Verwendung des Pakets profvis . Es misst nicht nur die Ausführungszeit Ihres Codes, sondern gibt Ihnen einen Drilldown für jede Funktion, die Sie ausführen. Es kann auch für Shiny verwendet werden.

library(profvis)

profvis({
  #your code here
})

Klicken Sie auf ici für einige Beispiele.

14voto

Richie Cotton Punkte 112708

Sie können die MATLAB-ähnliche tic - toc Funktionen, wenn Sie dies bevorzugen. Siehe diese andere SO-Frage

Stoppuhr-Funktion in R

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X