2010-04-26 16 views
11

Come si può profilare un'azione del controllore?Come posso profilare una richiesta in Ruby on Rails?

Uno dei miei punti di vista sta richiedendo un po 'di tempo per il rendering, e mi piacerebbe scomporlo. Vedo script/performance/profiler, ma sembra che abbia solo accesso all'ambito globale.

risposta

8

ruby-prof è la strada da percorrere. Ecco un howto, How to profile your Rails and Ruby applications with ruby-prof.

Se lo si utilizza in combinazione con uno strumento di visualizzazione come kcachegrind, è possibile separare facilmente il codice che è il codice dell'applicazione dal codice quadro.

ho tenuto una conferenza su questi strumenti al mio locale gruppo Ruby-utenti un po 'indietro: Making your rails app kick ass with ruby-prof and kcachegrind.

+0

Ho provato a seguire le istruzioni nel collegamento fornito qui, ma ho scoperto che 'script/performance/request' è stato rimosso a partire da Rails 2.3.2. –

+0

Sì, questa risposta è specifica per Rails-2 come l'ho data nel 2010. Non sono sicuro che il modo Rails 3 di fare questo ... –

+1

Changelog (http://rails.rubyonrails.org/files/railties/CHANGELOG.html) dice: Rimuovi script/performance/richiesta a favore dei test di integrazione delle prestazioni. [Pratik Naik] "Per continuare a utilizzare lo script/prestazioni/richiesta, installare il plugin request_profiler: script/plugin install git: //github.com/rails/request_profiler.git" –

2

La console Ruby on Rails dovrebbe mostrare quali parti parziali impiegano un po 'di tempo a eseguire il rendering. Se ciò non bastasse, puoi installare la nuova gemma relic (https://github.com/newrelic/rpm) e utilizzarla in modalità sviluppatore che ti darà una panoramica di ciò che sta accadendo.

Se si sta distribuendo su Heroku è possibile aggiungere la versione gratuita di rpm che fornirà le stesse statistiche sull'applicazione in esecuzione.

Ruby ha un profiler (http://ruby-prof.rubyforge.org/) che mostra l'utilizzo della memoria, i tempi di chiamata, ecc., Ma potrebbe essere difficile diffondere il codice dal codice framework.

+0

New Relic può dirvi un po 'di più, ma non ha il profiling del codice linea per riga che è necessario per l'analisi completa delle prestazioni. –

+0

e non sotto windof – halfbit

0

che ho avuto un certo successo con https://github.com/bhb/rack-perftools_profiler

E lascerò profilo un unico o più richieste per uno qualsiasi dei cputime, metodi, le allocazioni di oggetti o walltime, e integrare ben via Rack middleware.