класс 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, делая его суммой времён этого объекта 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.