2011-03-08 9 views
8

¿Qué puedo usar para el código de perfil en 1.9.2? Todas las versiones de ruby-prof he encontrado segfault contra 1.9.2.¿Cómo puedo perfilar el código Ruby en 1.9.2?

Por ejemplo, cuando agrego

gem "ruby-prof" 

a Gemfile de mi proyecto de rieles y corro

bundle 
bundle exec ruby-prof config/environment.rb 

consigo una violación de segmento.

¿Hay una nueva gema de perfiles en la ciudad? ¿Hay alguna forma de hacer que Ruby-prof juegue bien?

+0

Y no segfault cuando no tienes 'gem" ruby-prof "' pero ejecuta los comandos del paquete? –

+0

Bueno, si no tengo 'ruby-prof' en el paquete, entonces no puedo' agrupar exec ruby-prof'. Pero 'bundle exec ruby ​​config/environment.rb' no segfault. – Peeja

Respuesta

2

No estoy seguro de que ayude pero tropecé con esto que puede agregar un poco más de claridad o conducirlo por un camino diferente: http://www.devheads.net/development/ruby/core/segmentation-fault-when-using-ruby-prof-and-ruby-192.htm. Es posible que desee verificar el tenedor de wycats basado en ese hilo: https://github.com/wycats/ruby-prof

Además, no lo he probado yo mismo y puede que no sea exactamente lo que está buscando pero la fama de Aman de Github tiene un puerto de google- perftools del Ruby: https://github.com/tmm1/perftools.rb

2

Como @ chris.baglieri sugirió, puede utilizar la gema perftools.rb para perfilar Ruby 1.9 código.

gem install perftools.rb 

Entonces

require 'perftools' 
PerfTools::CpuProfiler.start('profile_data') do 
    # something cpu-intensive 
end 
`pprof.rb --text profile_data profile.txt` 
`pprof.rb --pdf profile_data profile.pdf` 
2

Se puede utilizar otro popular herramienta de perfiles - MethodProfiler

Es muy práctico para encontrar método lento en la clase de destino.

Cuestiones relacionadas