類別 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 lib/benchmark.rb, line 432
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 lib/benchmark.rb, line 480
def *(x); memberwise(:*, x) end
+(other) 按一下以切換來源

傳回一個新的 Tms 物件,該物件是透過將此 Tms 物件的個別時間與 other Tms 物件的個別時間進行逐項加總而取得。此方法和 /() 對於取得統計資料很有用。

# File lib/benchmark.rb, line 467
def +(other); memberwise(:+, other) end
-(other) 按一下以切換來源

傳回一個新的 Tms 物件,取得由個別時間減去其他 Tms 物件的個別時間。

# File lib/benchmark.rb, line 474
def -(other); memberwise(:-, other) end
/(x) 按一下以切換來源

傳回一個新的 Tms 物件,取得由這個 Tms 物件的個別時間除以 x。這個方法和 +() 對取得統計資料很有用。

# File lib/benchmark.rb, line 487
def /(x); memberwise(:/, x) end
add() { || ... } 按一下以切換來源

傳回一個新的 Tms 物件,其時間是這個 Tms 物件的時間總和,加上執行程式區塊 (blk) 所需的時間。

# File lib/benchmark.rb, line 441
def add(&blk) # :yield:
  self + Benchmark.measure(&blk)
end
add!(&blk) 按一下以切換來源

一個 add 的原地版本。將這個 Tms 物件的時間變更為這個 Tms 物件的時間總和,加上執行程式區塊 (blk) 所需的時間。

# File lib/benchmark.rb, line 451
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) 按一下以切換來源

傳回這個 Tms 物件的內容,作為一個格式化字串,根據傳遞給 Kernel.formatformat 字串。此外,format 接受下列延伸

%u

由使用者 CPU 時間取代,如 Tms#utime 所報告。

%y

由系統 CPU 時間取代,如 stime 所報告 (助記符:y 為 “s*y*stem”)

%U

由子項目的使用者 CPU 時間取代,如 Tms#cutime 所報告

%Y

由子項目的系統 CPU 時間取代,如 Tms#cstime 所報告

%t

由總 CPU 時間取代,如 Tms#total 所報告

%r

由經過的實際時間取代,如 Tms#real 所報告

%n

由標籤字串取代,如 Tms#label 所報告 (助記符:n 為 “*n*ame”)

如果未提供 formatFORMAT 會用作預設值,詳細說明使用者、系統和經過的實際時間。

# File lib/benchmark.rb, line 506
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 531
def to_a
  [@label, @utime, @stime, @cutime, @cstime, @real]
end
to_h() 按一下以切換來源

傳回包含與「to_a」相同資料的雜湊。

# File lib/benchmark.rb, line 538
def to_h
  {
    label:  @label,
    utime:  @utime,
    stime:  @stime,
    cutime: @cutime,
    cstime: @cstime,
    real:   @real
  }
end
to_s() 按一下以切換來源

format 相同。

# File lib/benchmark.rb, line 521
def to_s
  format
end

受保護的執行個體方法

memberwise(op, x) 按一下以切換來源

傳回新的 Tms 物件,此物件是由這個 Tms 物件的個別時間與其他 Tms 物件 (x) 的個別時間進行成員明智運算 op 取得。

op 可以是數學運算,例如 +-*/

# File lib/benchmark.rb, line 559
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