J'ai essayé de creuser dans ce que les porcs de temps sont dans certains r code que j'ai écrit, alors j'utilise RPRROF code>. La sortie n'est pas encore très utile cependant:
> summaryRprof()
$by.self
self.time self.pct total.time total.pct
"$<-.data.frame" 2.38 23.2 2.38 23.2
"FUN" 2.04 19.9 10.20 99.6
"[.data.frame" 1.74 17.0 5.54 54.1
"[.factor" 1.42 13.9 2.90 28.3
...
3 Réponses :
L'analyse de la sortie que RPRROF code> n'est pas trop difficile, puis vous avez accès à absolument tout. P>
Ce que je ferais, c'est d'avoir accès aux échantillons de pile brute ( Stackshots ) qu'il recueille et en choisit plusieurs au hasard et les examine. Ce que je cherche, c'est des sites d'appels (pas seulement des fonctions, mais les endroits où une fonction appelle une autre) qui apparaît sur plusieurs échantillons. Par exemple, si un site d'appel apparaît sur 50% des échantillons, c'est ce que cela coûte, car sa suppression éventuelle économiserait environ 50% du temps total. (Semble évident, non? Mais ce n'est pas bien connu.) P>
Tous les sites d'appels coûteux sont optimisables, mais certains sont, sauf si em> le programme est déjà aussi rapide que possible. P>
(Ne soyez pas distrait par des problèmes comme le nombre d'échantillons que vous devez regarder. Si quelque chose va vous enregistrer une fraction de temps raisonnable, il apparaît sur une fraction similaire d'échantillons. Le nombre exact ne fonctionne pas la matière. Ce qui compte, c'est que vous le trouvez. Ne vous laissez pas non plus être distrait par des problèmes de graphique et de récursivité et de mesure de temps et de comptage. Ce qui compte est, pour chaque site d'appel que vous voyez, la fraction des échantillons de pile qui le montrent.) p>