Подтвердить что ты не робот

Модуль 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)

Каковы значения "пользователь", "система" и "реальный"?

4b9b3361

Ответ 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