Existe-t-il une manière standardisée en R de mesurer le temps d'exécution d'une fonction ?
Évidemment, je peux prendre system.time
avant et après l'exécution et ensuite prendre la différence entre les deux, mais j'aimerais savoir s'il existe une méthode ou une fonction standardisée (j'aimerais ne pas inventer la roue).
Je crois me souvenir que j'ai déjà utilisé quelque chose de semblable à ce qui suit :
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
2 votes
Je pense que vous avez
proc.time
sur la cause de l'espritsystem.time
est celui dont vous avez besoin.2 votes
Pour les fonctions plus importantes,
Rprof
c'est bien. Il fournit un profil de tous les processus dans un morceau de code/fonction.51 votes
Les nouveaux utilisateurs de R ont trouvé cette question sur Google :
require(microbenchmark)
est maintenant (depuis quelques années) le moyen standard de la communauté pour chronométrer les choses.times <- microbenchmark( lm(y~x), glm(y~x), times=1e3); example(microbenchmark)
. Cela fait un statistiques comparaison delm
vsglm
sur 1000 essais, plutôt quesystem.time
le test n'est effectué qu'une seule fois.0 votes
Utiliser
res <- microbenchmark(your code1,your code2)
et ensuiteprint(res)
pour voir un tableau ouggplot2::autoplot(res)
pour voir un boxplot ! réf.