Testare la performance del codice in Ruby e in Rails
Posted by Dibi Store Wed, 07 Nov 2007 10:22:00 GMT
Quando scriviamo del codice in ruby, non sempre risulta efficente, per qui potremmo trovarci nelle situazioni di usare una tecnica molto piu lenta rispetto ad un altra, che magari crediamo sbagliata. Rimanere nel dubbio, non è una buona cosa, specialmente per noi programmatori, per qui in questo articolo illustro 2 tecniche: la prima per testare il codice prodotto con ruby, e l'altra per testare la velocità delle sql in rails.
Performance in Ruby
Ruby dispone di una libreria chiamata Benchmark, che ci permette di testare la velocità del codice, ci basterà quindi includela nel nostro test, e provare un esempio come il seguente (preso da programming ruby):
require 'benchmark'
include Benchmark
string = "Stormy Weather"
m = string.method(:length)
bm(6) do |x|
x.report("call") { 10_000.times { m.call } }
x.report("send") { 10_000.times { string.send(:length) } }
x.report("eval") { 10_000.times { eval "string.length" } }
end
produces:
user system total real
call 0.020000 0.000000 0.020000 ( 0.045998)
send 0.040000 0.000000 0.040000 ( 0.051318)
eval 0.130000 0.000000 0.130000 ( 0.177950)
Il che non è niente male, giocateci un po per capire come sfruttarlo.
Performance in Rails
Rails ci mette a disposizione la classe benchmark per testare la velocità delle sql, che è utilissima, potete includere del codice simile al seguente in un vostro modello, richiamando poi una qualsiasi azione di quel modello, potrete vedere nel log il tempo che ci ha messo:
User.benchmark("adding and deleting 1000 users") do
1000.times do
State.create(:name => 'something')
x = State.find_by_name('something')
x.destroy
end
end
Spero prossimamente di poter fare degli articoli dettagliati riguardanti le performance, intanto vi lascio sperimentare un po :)

