9

我找不到任何关于这是否可能的信息,但我可以在命令中调用一个方法rails console并使用任何测量来确定性能,但我主要是及时考虑。

例如,我试图找出其中哪个更快:

[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
4

2 回答 2

22

有!而且你甚至不需要 Rails。从标准库中查看基准。

作为示例:

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)
于 2012-11-14T00:31:36.400 回答
1

这个宝石: https ://github.com/igorkasyanchuk/benchmark_methods

不再有这样的代码:

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

现在你可以这样做:

benchmark :calculate_report # in class

只需调用您的方法

user.calculate_report
于 2015-10-13T08:55:42.013 回答