Ruby 2.4

Benchmark::Tms

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标签。

# 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进行成员乘法获得。

# File lib/benchmark.rb, line 471 def *(x memberwise(:*, x) end

+(other) Show source

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

# File lib/benchmark.rb, line 458 def +(other memberwise(:+, other) end

- (other)显示源

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

# File lib/benchmark.rb, line 465 def -(other memberwise(:-, other) end

/(x) Show source

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

# File lib/benchmark.rb, line 478 def /(x memberwise(:/, x) end

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

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

# File lib/benchmark.rb, line 435 def add(&blk) # :yield: self + Benchmark.measure(&blk) end

add!(&blk) Show source

添加的就地版本。

# 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作为默认值,详细说明用户,系统和实际经过的时间。

# 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时间和已用实时时间。

# File lib/benchmark.rb, line 522 def to_a [@label, @utime, @stime, @cutime, @cstime, @real] end

to_s() Show source

Same as format.

# 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 +, -, *, /

# 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