Сравнительный анализ операции ruby, которая возвращает значение - PullRequest
11 голосов
/ 20 ноября 2011

Тест производительности занимает блок и возвращает время: http://ruby -doc.org / stdlib-1.9.3 / libdoc / benchmark / rdoc / Benchmark.html

require 'benchmark'
puts Benchmark.measure { "a"*1_000_000 }

Что, если вы хотите провести тестирование операции и получить и возвращаемое значение, и истекшее время?

Или, иначе говоря, может ли замыкание изменить переданный в него объект?

Ответы [ 2 ]

11 голосов
/ 20 ноября 2011

Закрытие может изменять объекты в своей области, например так:

require 'benchmark'

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

# =>   0.000000   0.000000   0.000000 (  0.004865)
# => 1000000
0 голосов
/ 13 октября 2015

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

Код больше не похож на этот:

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

Теперь вы можете сделать:

benchmark :calculate_report # in class

И просто назовите свой метод

user.calculate_report
...