类 Benchmark::Tms

一个数据对象,表示与基准测量相关的次数。

常量

CAPTION

默认标题,另请参见 Benchmark::CAPTION

FORMAT

默认格式字符串,另请参见 Benchmark::FORMAT

属性

cstime[R]

子项的系统 CPU 时间

cutime[R]

子项的用户 CPU 时间

label[R]

标签

real[R]

流逝的实际时间

stime[R]

系统 CPU 时间

total[R]

总时间,即 utime + stime + cutime + cstime

utime[R]

用户 CPU 时间

公共类方法

new(utime = 0.0, stime = 0.0, cutime = 0.0, cstime = 0.0, real = 0.0, label = nil) 点击切换源代码

返回一个已初始化的 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

公共实例方法

*(x) 点击切换源代码

返回一个新的 Tms 对象,该对象是通过对该 Tms 对象的各个时间进行逐成员乘法运算而获得的,乘数为 x

# File lib/benchmark.rb, line 480
def *(x); memberwise(:*, x) end
+(other) 点击切换源代码

返回一个新的 Tms 对象,该对象是通过对该 Tms 对象的各个时间与 other Tms 对象的各个时间进行逐个成员求和而获得的。此方法和 /() 对于获取统计数据非常有用。

# File lib/benchmark.rb, line 467
def +(other); memberwise(:+, other) end
-(other) 单击以切换源

返回一个新的 Tms 对象,该对象是通过从该 Tms 对象的各个时间中减去 other Tms 对象的各个时间而获得的。

# File lib/benchmark.rb, line 474
def -(other); memberwise(:-, other) end
/(x) 单击以切换源

返回一个新的 Tms 对象,该对象是通过将该 Tms 对象的各个时间逐个除以 x 而获得的。此方法和 +() 对于获取统计数据非常有用。

# File lib/benchmark.rb, line 487
def /(x); memberwise(:/, x) end
add() { || ... } 单击以切换源

返回一个新的 Tms 对象,其时间是该 Tms 对象的时间与执行代码块 (blk) 所需时间的总和。

# File lib/benchmark.rb, line 441
def add(&blk) # :yield:
  self + Benchmark.measure(&blk)
end
add!(&blk) 单击以切换源

add 的就地版本。通过将该 Tms 对象的时间变为该 Tms 对象的时间与执行代码块 (blk) 所需时间的总和,来更改该 Tms 对象的时间。

# File lib/benchmark.rb, line 451
def add!(&blk)
  t = Benchmark.measure(&blk)
  @utime  = utime + t.utime
  @stime  = stime + t.stime
  @cutime = cutime + t.cutime
  @cstime = cstime + t.cstime
  @real   = real + t.real
  self
end
format(format = nil, *args) 单击以切换源

根据传递给 Kernel.formatformat 字符串,以格式化字符串的形式返回该 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
to_a() 单击以切换源

返回一个新的 6 元素数组,包括标签、用户 CPU 时间、系统 CPU 时间、子项用户 CPU 时间、子项系统 CPU 时间和经过的实际时间。

# File lib/benchmark.rb, line 531
def to_a
  [@label, @utime, @stime, @cutime, @cstime, @real]
end
to_h() 单击以切换源

返回一个包含与“to_a”相同数据的哈希。

# File lib/benchmark.rb, line 538
def to_h
  {
    label:  @label,
    utime:  @utime,
    stime:  @stime,
    cutime: @cutime,
    cstime: @cstime,
    real:   @real
  }
end
to_s() 单击以切换源

format 相同。

# File lib/benchmark.rb, line 521
def to_s
  format
end

受保护的实例方法

memberwise(op, x) 单击以切换源

返回一个新的 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