非常教程

Ruby 2.4参考手册

基准测试 | Benchmark

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

基准测试 | Benchmark相关

Ruby 2.4

Ruby 是一种面向对象、命令式、函数式、动态的通用编程语言,是世界上最优美而巧妙的语言。

主页 https://www.ruby-lang.org/
源码 https://github.com/ruby/ruby
版本 2.4
发布版本 2.4.1

Ruby 2.4目录

1.缩略 | Abbrev
2.ARGF
3.数组 | Array
4.Base64
5.基本对象 | BasicObject
6.基准测试 | Benchmark
7.BigDecimal
8.绑定 | Binding
9.CGI
10.类 | Class
11.比较 | Comparable
12.负责 | Complex
13.计算续体 | Continuation
14.覆盖 | Coverage
15.CSV
16.日期 | Date
17.日期时间 | DateTime
18.DBM
19.代理 | Delegator
20.摘要 | Digest
21.Dir
22.DRb
23.编码 | Encoding
24.枚举 | Enumerable
25.枚举 | Enumerator
26.ENV
27.ERB
28.错误 | Errors
29.Etc
30.期望值 | Exception
31.错误类 | FalseClass
32.Fiber
33.Fiddle
34.文件 | File
35.文件实用程序 | FileUtils
36.查找 | Find
37.浮点 | Float
38.Forwardable
39.GC
40.GDBM
41.GetoptLong
42.Hash
43.Integer
44.IO
45.IPAddr
46.JSON
47.Kernel
48.语言 | 3Language
49.记录 | Logger
50.编排 | Marshal
51.MatchData
52.数学 | Math
53.矩阵 | Matrix
54.方法 | Method
55.模型 | Module
56.监控 | Monitor
57. 互斥 | Mutex
58.Net
59.Net::FTP
60.Net::HTTP
61.Net::IMAP
62.Net::SMTP
63.NilClass
64.数字 | Numeric
65.对象 | Object
66.ObjectSpace
67.Observable
68.Open3
69.OpenSSL
70.OpenStruct
71.OpenURI
72.OptionParser
73.路径名 | Pathname
74.完整输出 | PrettyPrint
75.Prime
76.Proc
77.过程 | Process
78.PStore
79.PTY
80.队列 | Queue
81.随机 | Random
82.范围 | Range
83.合理的 | Rational
84.Readline
85.Regexp
86.Resolv
87.Ripper
88.RubyVM
89.Scanf
90.SDBM
91.SecureRandom
92.Set
93.Shell
94.信号 | Signal
95.Singleton
96.套接字 | Socket
97.字符串 | String
98.StringIO
99.StringScanner
100.结构 | Struct