класс Benchmark::Tms
Объект данных, представляющий времена, связанные с измерением производительности.
Константы
- CAPTION
-
По умолчанию подпись, см. также Benchmark::CAPTION
- FORMAT
-
Строка формата по умолчанию, см. также Benchmark::FORMAT
Атрибуты
Время процессора системы для дочерних процессов
Время процессора пользователя для дочерних процессов
Метка
Прошедшее реальное время
Время процессора системы
Общее время, т.е. utime + stime + cutime + cstime
Время процессора пользователя
Методы публичного класса
# File lib/benchmark.rb, line 430 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, инициализированный значениями utime в качестве времени процессора пользователя, stime — времени процессора системы, cutime — времени процессора пользователя дочерних процессов, cstime — времени процессора системы дочерних процессов, real — прошедшего реального времени и label в качестве метки.
Методы публичного экземпляра
# File lib/benchmark.rb, line 449 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
Метод-аналог add для изменения времени текущего объекта Tms путём прибавления времени выполнения блока кода (blk).
# File lib/benchmark.rb, line 504
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 Возвращает строку, содержащую форматированные данные текущего объекта Tms, согласно строке формата, переданной в метод Kernel.format. Дополнительно, format поддерживает следующие расширения:
-
%u -
Заменяется на время процессора пользователя, полученное из
Tms#utime. -
%y -
Заменяется на время процессора системы, полученное из
stime(Мемо: y от «s*y*stem») -
%U -
Заменяется на время процессора пользователя дочерних процессов, полученное из
Tms#cutime -
%Y -
Заменяется на время процессора системы дочерних процессов, полученное из
Tms#cstime -
%t -
Заменяется на общее время процессора, полученное из
Tms#total -
%r -
Заменяется на прошедшее реальное время, полученное из
Tms#real -
%n -
Заменяется на строку метки, полученную из
Tms#label(Мемо: n от «*n*ame»)
Если format не задан, используется значение по умолчанию из FORMAT, отображающее время пользователя, системы и реальное время.
# File lib/benchmark.rb, line 529 def to_a [@label, @utime, @stime, @cutime, @cstime, @real] end
Возвращает новый массив из 6 элементов: метка, время процессора пользователя, системы, дочерних процессов и реальное время.
# File lib/benchmark.rb, line 536
def to_h
{
label: @label,
utime: @utime,
stime: @stime,
cutime: @cutime,
cstime: @cstime,
real: @real
}
end Возвращает хеш, содержащий те же данные, что и ‘to_a`.
# File lib/benchmark.rb, line 519 def to_s format end
Аналогично format.
Защищенные методы экземпляра
# File lib/benchmark.rb, line 557
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 Возвращает новый объект Tms, полученный путём выполнения поэлементной операции op над текущим объектом Tms и другим объектом Tms (x).
op может быть математической операцией, такой как +, -, *, /
Ruby Core © 1993–2022 Yukihiro Matsumoto
Licensed under the Ruby License.
Ruby Standard Library © contributors
Licensed under their own licenses.