Pergunta

Profiler / profiling questão relacionada com os testes de pepino.

Um dos nossos testes de pepino correr bastante lento. Em vez de adivinhar de onde nossa aplicação é passar o tempo, eu gostaria de saber programaticamente.

Como faço para desencadear um teste de pepino com um profiler ???

O que não funcionou:

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

Esta não funciona porque 'app.get' só funciona no console e não está disponível para o script profiler

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

Isto dá um resultado, mas eu tenho que adivinhar que esse método é o gargalo

(estou usando o pepino 0.3.94, trilhos 2.3.2, Ruby 1.8.7 (2008-08-11 patchlevel 72) [i686-darwin9.6.0])

Foi útil?

Solução 2

Mais um experimento é realmente uma resposta à minha pergunta, mas não me deu, mas realmente não me dê um resultado particularmente útil

$ 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

Isso realmente corre o cenário pepino único na linha 36, ??mas o resultado não é particularmente útil

Outras dicas

Além disso, tente pepino --format utilização, para obter algumas estatísticas sobre os passos mais lentos.

Usando ruby-prof, você pode iniciar o profiler antes do código assunto e pará-lo novamente depois. por exemplo:.

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
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top