Модуль Ruby Benchmark: значения «пользователь», «система» и «реальный»? - PullRequest
25 голосов
/ 24 октября 2009

Эксперимент с модулем Ruby's 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)

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

Ответы [ 2 ]

52 голосов
/ 24 октября 2009

Это то же самое время, что команда Unix time или другие типичные инструменты для бенчмаркинга сообщали:

  • пользователь : количество времени, потраченное на выполнение кода пользовательского пространства (т. Е. Вашего кода),
  • system : количество времени, потраченное на выполнение кода ядра и
  • real : «реальное» количество времени, необходимое для выполнения кода (т. Е. system + user + время, потраченное на ожидание ввода-вывода, сеть, диск, пользовательский ввод и т. д.). Также известна как «время настенных часов».
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
...