class 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 benchmark.rb, line 442
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 benchmark.rb, line 490
def *(x); memberwise(:*, x) end
+(other) 点击切换源码

返回一个新的 Tms 对象,该对象是通过将此 Tms 对象的各个时间与 other Tms 对象的各个时间进行按成员相加得到的。此方法和 #/() 对于获取统计信息很有用。

# File benchmark.rb, line 477
def +(other); memberwise(:+, other) end
-(other) 点击切换源码

返回一个新的 Tms 对象,该对象是通过从此 Tms 对象的各个时间中按成员减去 other Tms 对象的各个时间得到的。

# File benchmark.rb, line 484
def -(other); memberwise(:-, other) end
/(x) 点击切换源码

返回一个新的 Tms 对象,该对象是通过将此 Tms 对象的各个时间按成员除以 x 得到的。此方法和 +() 对于获取统计信息很有用。

# File benchmark.rb, line 497
def /(x); memberwise(:/, x) end
add() { || ... } 点击切换源码

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

# File benchmark.rb, line 451
def add(&blk) # :yield:
  self + Benchmark.measure(&blk)
end
add!(&blk) 点击切换源码

add 的就地版本。通过使其成为此 Tms 对象的时间与执行代码块 (blk) 所需的时间之和,来更改此 Tms 对象的时间。

# File benchmark.rb, line 461
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.format 的类似 format 字符串,返回此 Tms 对象的内容作为格式化的字符串。此外,format 接受以下扩展

%u

替换为用户 CPU 时间,如 Tms#utime 报告的那样。

%y

替换为系统 CPU 时间,如 stime 报告的那样(助记符:*y* of “s*y*stem”)

%U

替换为子进程的用户 CPU 时间,如 Tms#cutime 报告的那样

%Y

替换为子进程的系统 CPU 时间,如 Tms#cstime 报告的那样

%t

替换为总 CPU 时间,如 Tms#total 报告的那样

%r

替换为经过的实际时间,如 Tms#real 报告的那样

%n

替换为标签字符串,如 Tms#label 报告的那样(助记符:*n* of “*n*ame”)

如果未提供 format,则使用 FORMAT 作为默认值,详细说明用户、系统和经过的实际时间。

# File benchmark.rb, line 516
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 benchmark.rb, line 541
def to_a
  [@label, @utime, @stime, @cutime, @cstime, @real]
end
to_h() 点击切换源码

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

# File benchmark.rb, line 548
def to_h
  {
    label:  @label,
    utime:  @utime,
    stime:  @stime,
    cutime: @cutime,
    cstime: @cstime,
    real:   @real
  }
end
to_s() 点击切换源码

format 相同。

# File benchmark.rb, line 531
def to_s
  format
end

受保护的实例方法

memberwise(op, x) 点击切换源码

返回一个新的 Tms 对象,该对象是通过将此 Tms 对象的各个时间与另一个 Tms 对象 (x) 的各个时间进行按成员运算 op 得到的。

op 可以是数学运算,例如 +-*/

# File benchmark.rb, line 569
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