对返回值的ruby操作进行基准测试



基准测试接受一个块并返回时间: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

With https://github.com/igorkasyanchuk/benchmark_methods

不要再写这样的代码了:

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

现在你可以这样做:

benchmark :calculate_report # in class
然后调用你的方法
user.calculate_report

相关内容

  • 没有找到相关文章

最新更新