2012-11-14 11 views
8

Non sono riuscito a trovare alcuna informazione se fosse possibile, ma sarebbe utile poter chiamare un metodo su un comando nello rails console e determinare le prestazioni utilizzando qualsiasi misurazione, ma per la maggior parte ci pensavo in tempo.Esiste un modo per verificare le prestazioni di un comando nella console in Ruby on Rails?

Per esempio, sto cercando di capire quale di questi è più veloce:

[val2,val3,val4,val5,val6].find{|x| x != val1} 
[val2,val3,val4,val5,val6].all?{|x| x == val1} 

c'è qualcosa di simile?

[val2,val3,val4,val5,val6].find{|x| x != val1}.performance 

risposta

16

C'è! E non hai nemmeno bisogno di Rails. Esamina benchmark dalla libreria standard.

Come un campione:

require 'benchmark' 

puts Benchmark.measure { [val2,val3,val4,val5,val6].find{|x| x != val1} } 
puts Benchmark.measure { [val2,val3,val4,val5,val6].all?{|x| x == val1} } 

Il rapporto che viene emesso mostrerà (in secondi): tempo di CPU

  • utente.
  • Tempo CPU del sistema.
  • Somma dei tempi CPU utente e sistema.
  • Il tempo reale trascorso.

Qualcosa che assomiglia a questo:

0.350000 0.010000 0.360000 ( 0.436450) 
+0

E 'possibile eseguire questo nella console? Voglio eseguire roba di tipo ad-hoc non necessariamente nel codice del progetto stesso. – perseverance

+0

@persistence: sì, è possibile eseguire quel codice di esempio direttamente dalla console. – pje

0

Questo gioiello: https://github.com/igorkasyanchuk/benchmark_methods

Non più codice come questo:

t = Time.now 
user.calculate_report 
puts Time.now - t 

ora si può fare:

benchmark :calculate_report # in class 

E basta chiamare il metodo

user.calculate_report 
Problemi correlati