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

jus*_*don 11 ruby benchmarking closures

基准测试需要一个块并返回时间:http: //ruby-doc.org/stdlib-1.9.3/libdoc/benchmark/rdoc/Benchmark.html

require 'benchmark'
puts Benchmark.measure { "a"*1_000_000 }
Run Code Online (Sandbox Code Playgroud)

如果您想对操作进行基准测试并获得返回值和已用时间,该怎么办?

或者,换句话说,闭包可以修改传递给它的对象吗?

Mii*_*kka 11

闭包可以修改其范围内的对象,如下所示:

require 'benchmark'

a = nil
puts Benchmark.measure { a = "a" * 1_000_000 }
puts a.size

# =>   0.000000   0.000000   0.000000 (  0.004865)
# => 1000000
Run Code Online (Sandbox Code Playgroud)

  • 呸.我真的希望Benchmark会返回类似:`[time,result]`.然后你可以:`time,a = Benchmark.measure {...}` (3认同)