Frage

Profiler / Profilieren bezogenes Problem mit Gurken-Tests.

Eines unserer Gurken Tests laufen ziemlich langsam. Anstatt zu raten, auf denen unsere Anwendungszeit verbringt, würde Ich mag programmatisch wissen.

Wie kann ich löse eine Gurke Test mit einem Profiler ???

Was hat nicht funktioniert:

  $ URL=/projects/by/114951412 #URL to slow rails page
  $ script/performance/profiler 'app.get "$URL"' 50

Das funktioniert nicht, weil ‚app.get‘ nur in der Konsole arbeitet und nicht für Profiler Skript verfügbar

  $ EXPENSIVE_METHOD="Project.find('6300003243').aggregated_total_amount"
  $ script/performance/profiler "$EXPENSIVE_METHOD" 50

Dies ergibt ein Ergebnis, aber ich habe zu erraten, dass diese Methode ist die Engpass

(Ich bin mit Gurke 0.3.94, Schienen 2.3.2, Rubin 1.8.7 (2008-08-11 Patchlevel 72) [i686-darwin9.6.0])

War es hilfreich?

Lösung 2

Ein weiteres Experiment ist eigentlich eine Antwort auf meine Frage aber nicht geben Sie mir aber geben Sie mir nicht wirklich ein besonders nützliches Ergebnis

$ PROJECT_DIR=`pwd`
$ which cucumber
/usr/local/bin/cucumber
$ ln -s `which cucumber` cukes #required for profiler to have local file in next step
$ ruby-prof cukes -- features/manager_overview.feature:36

Dies führt tatsächlich das einzige Gurke Szenario auf der Linie 36, aber das Ergebnis ist nicht besonders nützlich

Andere Tipps

Versuchen Sie auch Gurke --format Nutzung einige Statistiken über die langsamsten Schritte zu erhalten.

Mit ruby-prof, können Sie den Profiler vor dem Code starten und wieder nach stoppen. zB:.

require 'ruby-prof'
RubyProf.start
# code here
result = RubyProf.stop

# You can then output the trace in different ways.
# Simply print a overview to stdout
printer = RubyProf::FlatPrinter.new(result)
printer.print($stdout, :min_percent => 0.1)

# Save a callgrind trace
# You can load this up in kcachegrind or a compatible tool.
printer = RubyProf::CallTreePrinter.new(result)
File.open "callgrind.out.42", 'w' do |file|
  RubyProf::CallTreePrinter.new(result).print(file)
end
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top