класс Benchmark::Tms
Объект данных, представляющий время, связанное с измерением производительности.
Константы
- CAPTION
-
Подпись по умолчанию; см. также Benchmark::CAPTION
- FORMAT
-
Строка формата по умолчанию; см. также Benchmark::FORMAT
Атрибуты
Системное время ЦП дочерних процессов
Пользовательское время ЦП дочерних процессов
Метка
Фактически затраченное время
Системное время ЦП
Общее время, то есть utime + stime + cutime + cstime
Пользовательское время ЦП
Общедоступные методы класса
# File lib/benchmark.rb, line 442 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 461 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, устанавливая их равными сумме значений времени этого объекта Tms и времени, необходимого для выполнения блока кода (blk).
# File lib/benchmark.rb, line 516
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 в виде форматированной строки в соответствии со строкой формата format, аналогичной передаваемой в 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 541 def to_a [@label, @utime, @stime, @cutime, @cstime, @real] end
Возвращает новый массив из 6 элементов: метка, пользовательское время ЦП, системное время ЦП, пользовательское время ЦП дочерних процессов, системное время ЦП дочерних процессов и фактически затраченное время.
# File lib/benchmark.rb, line 548
def to_h
{
label: @label,
utime: @utime,
stime: @stime,
cutime: @cutime,
cstime: @cstime,
real: @real
}
end Возвращает хеш, содержащий те же данные, что и «to_a».
# File lib/benchmark.rb, line 531 def to_s format end
То же, что и format.
Защищённые методы экземпляра
# File lib/benchmark.rb, line 569
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–2025 Yukihiro Matsumoto
Licensed under the Ruby License.
Ruby Standard Library © contributors
Licensed under their own licenses.