2012-11-14 16 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 
相关问题