类 Benchmark::Tms
一个数据对象,表示与基准测量相关的次数。
常量
- CAPTION
默认标题,另请参见 Benchmark::CAPTION
- FORMAT
默认格式字符串,另请参见 Benchmark::FORMAT
属性
子项的系统 CPU 时间
子项的用户 CPU 时间
标签
流逝的实际时间
系统 CPU 时间
总时间,即 utime
+ stime
+ cutime
+ cstime
用户 CPU 时间
公共类方法
返回一个已初始化的 Tms
对象,其中 utime
为用户 CPU 时间,stime
为系统 CPU 时间,cutime
为子项的用户 CPU 时间,cstime
为子项的系统 CPU 时间,real
为流逝的实际时间,label
为标签。
# File lib/benchmark.rb, line 432 def initialize(utime = 0.0, stime = 0.0, cutime = 0.0, cstime = 0.0, real = 0.0, label = nil) @utime, @stime, @cutime, @cstime, @real, @label = utime, stime, cutime, cstime, real, label.to_s @total = @utime + @stime + @cutime + @cstime end
公共实例方法
根据传递给 Kernel.format
的 format
字符串,以格式化字符串的形式返回该 Tms
对象的内容。此外,format
接受以下扩展
%u
-
替换为用户 CPU 时间,如
Tms#utime
所报告。 %y
-
替换为系统 CPU 时间,如
stime
所报告(助记符:“s*y*stem” 的 y) %U
-
替换为子进程的用户 CPU 时间,如
Tms#cutime
所报告 %Y
-
替换为子进程的系统 CPU 时间,如
Tms#cstime
所报告 %t
-
替换为总 CPU 时间,如
Tms#total
所报告 %r
-
替换为经过的实际时间,如
Tms#real
所报告 %n
-
替换为标签字符串,如
Tms#label
所报告(助记符:n 为“*n*ame”)
如果未给出 format
,则 FORMAT
用作默认值,详细说明用户、系统和实际经过时间。
# File lib/benchmark.rb, line 506 def format(format = nil, *args) str = (format || FORMAT).dup str.gsub!(/(%[-+.\d]*)n/) { "#{$1}s" % label } str.gsub!(/(%[-+.\d]*)u/) { "#{$1}f" % utime } str.gsub!(/(%[-+.\d]*)y/) { "#{$1}f" % stime } str.gsub!(/(%[-+.\d]*)U/) { "#{$1}f" % cutime } str.gsub!(/(%[-+.\d]*)Y/) { "#{$1}f" % cstime } str.gsub!(/(%[-+.\d]*)t/) { "#{$1}f" % total } str.gsub!(/(%[-+.\d]*)r/) { "(#{$1}f)" % real } format ? str % args : str end
返回一个新的 6 元素数组,包括标签、用户 CPU 时间、系统 CPU 时间、子项用户 CPU 时间、子项系统 CPU 时间和经过的实际时间。
# File lib/benchmark.rb, line 531 def to_a [@label, @utime, @stime, @cutime, @cstime, @real] end
返回一个包含与“to_a”相同数据的哈希。
# File lib/benchmark.rb, line 538 def to_h { label: @label, utime: @utime, stime: @stime, cutime: @cutime, cstime: @cstime, real: @real } end
与 format
相同。
# File lib/benchmark.rb, line 521 def to_s format end
受保护的实例方法
返回一个新的 Tms
对象,该对象通过此 Tms
对象的各个时间与另一个 Tms
对象 (x
) 的各个时间的成员运算 op
获得。
op
可以是数学运算,例如 +
、-
、*
、/
# File lib/benchmark.rb, line 559 def memberwise(op, x) case x when Benchmark::Tms Benchmark::Tms.new(utime.__send__(op, x.utime), stime.__send__(op, x.stime), cutime.__send__(op, x.cutime), cstime.__send__(op, x.cstime), real.__send__(op, x.real) ) else Benchmark::Tms.new(utime.__send__(op, x), stime.__send__(op, x), cutime.__send__(op, x), cstime.__send__(op, x), real.__send__(op, x) ) end end