首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Benchmark::Tms

Parent:Object

数据对象,表示与基准测量相关的时间。

常量

CAPTION

默认标题,另请参阅基准::标题

FORMAT

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

属性

cstimeR

系统CPU时间的儿童

cutimeR

儿童的用户CPU时间

labelR

Label

realR

实时运行

stimeR

系统CPU时间

totalR

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

utimeR

用户CPU时间

公共类方法

new(utime = 0.0, stime = 0.0, cutime = 0.0, cstime = 0.0, real = 0.0, label = nil) Show source

返回一个初始化的Tms对象,它具有utime作为用户CPU时间stime的系统CPU时间作为子系统CPU时间,cutime作为子系统CPU时间,作为cstime儿童系统CPU时间,real作为实时已用时间和label标签。

代码语言:javascript
复制
# File lib/benchmark.rb, line 426
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) Show source

返回一个新的Tms对象,该对象通过将此Tms对象的各个时间乘以x进行成员乘法获得。

代码语言:javascript
复制
# File lib/benchmark.rb, line 471
def *(x); memberwise(:*, x) end

+(other) Show source

返回一个新的Tms对象,该Tms对象通过将此Tms对象与其他Tms对象的各个时间的成员总和相加获得。这个方法和#/()对于统计是很有用的。

代码语言:javascript
复制
# File lib/benchmark.rb, line 458
def +(other); memberwise(:+, other) end

- (other)显示源

返回一个新的Tms对象,该对象通过成员减去其他Tms对象的各个时间与此Tms对象的各个时间相减得到。

代码语言:javascript
复制
# File lib/benchmark.rb, line 465
def -(other); memberwise(:-, other) end

/(x) Show source

返回一个新的Tms对象,该对象通过由x对这个Tms对象的各个时间进行成员划分而获得。此方法和#+()对于统计数据非常有用。

代码语言:javascript
复制
# File lib/benchmark.rb, line 478
def /(x); memberwise(:/, x) end

add() { || ... } Show source

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

代码语言:javascript
复制
# File lib/benchmark.rb, line 435
def add(&blk) # :yield:
  self + Benchmark.measure(&blk)
end

add!(&blk) Show source

添加的就地版本。

代码语言:javascript
复制
# File lib/benchmark.rb, line 442
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 = nil,* args)显示源文件

根据format传递给Kernel#format的字符串,以格式化字符串的形式返回此Tms对象的内容。另外,格式接受以下扩展名:

%u

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

%y

由stime(助记符:y的“s * y * stem”)报告的系统CPU时间替换

%U

由#cutime报告,由儿童用户CPU时间替换

%Y

由#cstime报告,由儿童系统CPU时间替代

%t

由#total报告的总CPU时间替换

%r

正如#real所报告的那样,已经过去的实时替换

%n

由标签字符串替换,如#label所报告(助记符:n为??“* n * ame”)

如果format没有给出,则使用FORMAT作为默认值,详细说明用户,系统和实际经过的时间。

代码语言:javascript
复制
# File lib/benchmark.rb, line 497
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时间和已用实时时间。

代码语言:javascript
复制
# File lib/benchmark.rb, line 522
def to_a
  [@label, @utime, @stime, @cutime, @cstime, @real]
end

to_s() Show source

Same as format.

代码语言:javascript
复制
# File lib/benchmark.rb, line 512
def to_s
  format
end

受保护的实例方法

memberwise(op, x) Show source

返回一个新的Tms对象op,该对象通过成员操作此Tms对象的各个时间与其他Tms对象的各个时间获得。

op can be a mathematical operation such as +, -, *, /

代码语言:javascript
复制
# File lib/benchmark.rb, line 536
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

扫码关注腾讯云开发者

领取腾讯云代金券

http://www.vxiaotou.com