類別 Benchmark::Tms
一個資料物件,代表與基準測量相關聯的時間。
常數
- CAPTION
預設標題,另請參閱 Benchmark::CAPTION
- FORMAT
預設格式字串,另請參閱 Benchmark::FORMAT
屬性
子項目的系統 CPU 時間
子項目的使用者 CPU 時間
標籤
經過的實際時間
系統 CPU 時間
總時間,也就是 utime
+ stime
+ cutime
+ cstime
使用者 CPU 時間
公開類別方法
傳回一個初始化的 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
公開實例方法
傳回這個 Tms
物件的內容,作為一個格式化字串,根據傳遞給 Kernel.format
的 format
字串。此外,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”)
如果未提供 format
,FORMAT
會用作預設值,詳細說明使用者、系統和經過的實際時間。
# 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
傳回一個新的 6 個元素陣列,包含標籤、使用者 CPU 時間、系統 CPU 時間、子項目的使用者 CPU 時間、子項目的系統 CPU 時間和經過的實際時間。
# File lib/benchmark.rb, line 531 def to_a [@label, @utime, @stime, @cutime, @cstime, @real] end
傳回包含與「to_a」相同資料的雜湊。
# File lib/benchmark.rb, line 538 def to_h { label: @label, utime: @utime, stime: @stime, cutime: @cutime, cstime: @cstime, real: @real } end
與 format
相同。
# File lib/benchmark.rb, line 521 def to_s format end
受保護的執行個體方法
傳回新的 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