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
本文档系腾讯云开发者社区成员共同维护,如有问题请联系 cloudcommunity@tencent.com