2012-11-14 13 views
8

我找不到任何信息,如果這是可能的,但它會很有用我可以調用rails console命令中的方法,並使用任何測量來確定性能,但我主要是在及時考慮。有沒有辦法在Ruby on Rails的控制檯中檢查命令的性能?

例如,我試圖找出其中的這些速度更快:

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

是否有這樣的事?

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

回答

16

還有!而你甚至不需要Rails。從標準庫中查看benchmark

作爲樣品:

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} } 

即輸出將顯示(以秒計)的報告:

  • 用戶CPU時間。
  • 系統CPU時間。
  • 用戶和系統CPU時間之和。
  • 已過去的實時。

的東西,看起來像這樣:

0.350000 0.010000 0.360000 ( 0.436450) 
+0

是否有可能在控制檯中運行呢?我想運行ad-hoc類型的東西不一定在項目代碼本身。 – perseverance

+0

@persistence:是的,您可以直接從控制檯運行示例代碼。 – pje

0

這種寶石: https://github.com/igorkasyanchuk/benchmark_methods

沒有更多這樣的代碼:

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

現在你可以這樣做:

benchmark :calculate_report # in class 

並調用你的方法

user.calculate_report 
相關問題