Ruby-Prof output interpretieren

25/10/2007 - 19:21 von Torsten Robitzki | Report spam
Hallo,
ich habe einen WEBrick Server, der eine Rails-Anwendung ausführt. Um
periodisch auszuführende Aktionen durch zu führen, habe ich einen
Cron-Job, der mit wget eine Aktion im Server anstößt. Da die Performance
nicht besonders gut ist, wollte ich das ganze mal messen. Jetzt bin ich
auf ruby-prof gestoßen. Das Ergebnis meiner Messung habe ich nach total
(The time spent in this method and its children.) sortiert und mir mal
ein paar interessante Werte heraus genommen:

%self total self wait child calls name
0.00 19.46 0.00 0.00 19.46 1 TimerController#tick
0.00 19.46 0.00 0.00 19.46 1
TimerController#build_buildings
0.00 10.89 0.00 0.00 10.89 1
TimerController#auto_traders
0.00 8.24 0.00 0.00 8.24 1
TimerController#finish_new_productions

TimerController#tick, ist die Funktion, die durch den http request
direkt aufgerufen wird. Die Funktionen build_buildings(), auto_traders()
und finish_new_productions() werden von tick() je einmal aufgerufen.
Meiner Meinung nach müste die Summe der total-Werte für die letzten drei
Funktionen dem total-Wert von tick() entsprechen. Dem ist aber nicht so,
wo könnte da der (Denk-) Fehler liegen?

mfg Torsten


kostenlose Wirtschaftssimulation: http://www.financial-rumors.de
 

Lesen sie die antworten

#1 Robert Klemme
26/10/2007 - 00:04 | Warnen spam
On 25.10.2007 19:21, Torsten Robitzki wrote:
Hallo,
ich habe einen WEBrick Server, der eine Rails-Anwendung ausführt. Um
periodisch auszuführende Aktionen durch zu führen, habe ich einen
Cron-Job, der mit wget eine Aktion im Server anstößt. Da die Performance
nicht besonders gut ist, wollte ich das ganze mal messen. Jetzt bin ich
auf ruby-prof gestoßen. Das Ergebnis meiner Messung habe ich nach total
(The time spent in this method and its children.) sortiert und mir mal
ein paar interessante Werte heraus genommen:

%self total self wait child calls name
0.00 19.46 0.00 0.00 19.46 1 TimerController#tick
0.00 19.46 0.00 0.00 19.46 1
TimerController#build_buildings
0.00 10.89 0.00 0.00 10.89 1
TimerController#auto_traders
0.00 8.24 0.00 0.00 8.24 1
TimerController#finish_new_productions

TimerController#tick, ist die Funktion, die durch den http request
direkt aufgerufen wird. Die Funktionen build_buildings(), auto_traders()
und finish_new_productions() werden von tick() je einmal aufgerufen.
Meiner Meinung nach müste die Summe der total-Werte für die letzten drei
Funktionen dem total-Wert von tick() entsprechen. Dem ist aber nicht so,
wo könnte da der (Denk-) Fehler liegen?



Ich vermute: Total ist total. In anderen Worten: inklusive Zeit. Das
wirft allerdings die Frage auf, was "child" bedeutet. Da du gefiltert
hast, nehme ich an, es ist die Zeit, die in aufgerufenen Methoden
verbraten wird.

Siehe zB auch http://ruby-prof.rubyforge.org/flat.txt

Ciao

robert

Ähnliche fragen