关于性能:Ruby Benchmark模块: “user”, “system”, and “real”的含义?

Ruby Benchmark module: meanings of “user”, “system”, and “real”?

正在尝试Ruby的基准模块…

1
2
3
>> 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)

"用户"、"系统"和"真实"的含义是什么?


这些时间与unix time命令或其他典型的基准测试工具报告的时间相同:

  • 用户:执行用户空间代码(即:您的代码)所花费的时间,
  • 系统:执行内核代码和
  • 实:执行代码所花费的"实"时间量(即系统+用户+等待I/O、网络、磁盘、用户输入等所花费的时间)。也被称为"时钟时间"。


请检查这个宝石:https://github.com/igorkasyanchuk/benchmach方法

不再有这样的代码:

1
2
3
t = Time.now
user.calculate_report
puts Time.now - t

现在你可以做到:

1
benchmark :calculate_report # in class

然后调用你的方法

1
user.calculate_report