class Benchmark::Tms
Объект данных, представляющий время, связанное с измерением производительности.
Константы
- CAPTION
-
Значение заголовка по умолчанию, см. также Benchmark::CAPTION
- FORMAT
-
Строка формата по умолчанию, см. также Benchmark::FORMAT
Атрибуты
Время процессора системы для дочерних процессов.
Время процессора пользователя для дочерних процессов.
Метка.
Прошедшее реальное время.
Время процессора системы.
Общее время, то есть utime + stime + cutime + cstime
Время процессора пользователя.
Публичные методы класса
# File lib/benchmark.rb, line 427 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, время процессора пользователя для дочерних процессов равно cstime, время процессора системы для дочерних процессов равно real, прошедшее реальное время равно label, а метка равна
# File lib/benchmark.rb, line 475 def *(x); memberwise(:*, x) end.
Публичные методы экземпляра
Tms Возвращает новый объект # File lib/benchmark.rb, line 482
def /(x); memberwise(:/, x) end
, полученный путём поэлементного деления индивидуальных времен данного объекта Tms на Tms. Этот метод и метод x полезны для расчёта статистик.
+() Возвращает новый объект # File lib/benchmark.rb, line 436
def add(&blk) # :yield:
self + Benchmark.measure(&blk)
end
, времена которого являются суммой времён данного объекта Tms плюс время выполнения кода блока (Tms).
blk Метод-аналог # File lib/benchmark.rb, line 446
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 501
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 от “s*y*stem”) -
%y -
Заменяется временем процессора пользователя для дочерних процессов, полученным из
stime. -
%U -
Заменяется временем процессора системы для дочерних процессов, полученным из
Tms#cutime. -
%Y -
Заменяется общим временем процессора, полученным из
Tms#cstime. -
%t -
Заменяется прошедшим реальным временем, полученным из
Tms#total. -
%r -
Заменяется строкой метки, полученной из
Tms#real(Мемоническая подсказка: n от “*n*ame”)
Если %n не задано, используется значение по умолчанию Tms#label, отображающее время пользователя, системы и реальное прошедшее время.
format Возвращает новый массив из 6 элементов, состоящий из метки, времени процессора пользователя, времени процессора системы, времени процессора пользователя для дочерних процессов, времени процессора системы для дочерних процессов и прошедшего реального времени.
Защищённые методы экземпляра
# File lib/benchmark.rb, line 516 def to_s format end
Возвращает новый объект format, полученный путём поэлементного выполнения операции
# File lib/benchmark.rb, line 540
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, +, -.
*