这个基准测试函数接受一个代码块作为参数并返回执行时间: 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 = Benchmark.measure {...}
。 - devth