基准需要一个块,返回,时间红宝石操作: http://ruby-doc.org/stdlib-1.9.3/libdoc/benchmark/rdoc/Benchmark.html标杆返回一个值
require 'benchmark'
puts Benchmark.measure { "a"*1_000_000 }
如果你想基准的操作,并同时获得返回值和所经过的时间?或者,换句话说,闭包可以修改传入它的对象吗?
基准需要一个块,返回,时间红宝石操作: http://ruby-doc.org/stdlib-1.9.3/libdoc/benchmark/rdoc/Benchmark.html标杆返回一个值
require 'benchmark'
puts Benchmark.measure { "a"*1_000_000 }
如果你想基准的操作,并同时获得返回值和所经过的时间?或者,换句话说,闭包可以修改传入它的对象吗?
闭包可以修改对象的范围,就像这样:
require 'benchmark'
a = nil
puts Benchmark.measure { a = "a" * 1_000_000 }
puts a.size
# => 0.000000 0.000000 0.000000 ( 0.004865)
# => 1000000
随着https://github.com/igorkasyanchuk/benchmark_methods
没有更多这样的代码:
t = Time.now
user.calculate_report
puts Time.now - t
现在你可以这样做:
benchmark :calculate_report # in class
只需调用你的方法
user.calculate_report
因此,关闭有一个可写的指针,指向传递给它们的内容?并且可以关闭修改@a和@@ a,假设它们是在关闭之外定义的。 – justingordon
@justingordon:是的,他们可以。 – Miikka
Yuck。我真的希望Benchmark会返回类似于''[time,result]''。然后你可以:'时间,a = Benchmark.measure {...}' – devth