Модуль Ruby Benchmark: значения "пользователь", "система" и "реальный"?
Экспериментирование с модулем Ruby Benchmark...
>> Benchmark.bm(7) { |b| b.report('Report:') { s = '' ; 10000.times { s += 'a' } } }
user system total real
Report: 0.150000 0.010000 0.160000 ( 0.156361)
Каковы значения "пользователь", "система" и "реальный"?
Ответы
Ответ 1
Это те же моменты, что и команда Unix time
или другие типичные инструменты для сравнения:
- пользователь: количество времени, затрачиваемого на выполнение кода пользователя (т.е.: код),
- : количество времени, затрачиваемого на выполнение кода ядра, и
- real: "реальное" количество времени, которое потребовалось для выполнения кода (то есть система + пользователь + время, потраченное на ожидание ввода-вывода, сети, диска, ввода пользователя и т.д.). Также известен как "время разгона".
Ответ 2
Пожалуйста, проверьте этот драгоценный камень:
https://github.com/igorkasyanchuk/benchmark_methods
Больше нет кода:
t = Time.now
user.calculate_report
puts Time.now - t
Теперь вы можете сделать:
benchmark :calculate_report # in class
И просто вызовите ваш метод
user.calculate_report