Spec-Zone.ru › Ruby 3.4
  1. Benchmark::
  2. Tms

класс Benchmark::Tms

Родительский класс:
Object

Объект данных, представляющий время, связанное с измерением производительности.

Константы

CAPTION

Подпись по умолчанию; см. также Benchmark::CAPTION

FORMAT

Строка формата по умолчанию; см. также Benchmark::FORMAT

Атрибуты

cstime [R]

Системное время ЦП дочерних процессов

cutime [R]

Пользовательское время ЦП дочерних процессов

label [R]

Метка

real [R]

Фактически затраченное время

stime [R]

Системное время ЦП

total [R]

Общее время, то есть utime + stime + cutime + cstime

utime [R]

Пользовательское время ЦП

Общедоступные методы класса

new (utime = 0.0, stime = 0.0, cutime = 0.0, cstime = 0.0, real = 0.0, label = nil) Показать исходный код
# 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 — метка.

Общедоступные методы экземпляра

* (x) Показать исходный код
# File lib/benchmark.rb, line 490
def *(x); memberwise(:*, x) end

Возвращает новый объект Tms, полученный в результате поэлементного умножения отдельных значений времени этого объекта Tms на x.

+ (other) Показать исходный код
# File lib/benchmark.rb, line 477
def +(other); memberwise(:+, other) end

Возвращает новый объект Tms, полученный в результате поэлементного сложения отдельных значений времени этого объекта Tms со значениями объекта Tms other. Этот метод и /() полезны для сбора статистики.

- (other) Показать исходный код
# File lib/benchmark.rb, line 484
def -(other); memberwise(:-, other) end

Возвращает новый объект Tms, полученный в результате поэлементного вычитания отдельных значений времени объекта Tms other из значений этого объекта Tms.

/ (x) Показать исходный код
# File lib/benchmark.rb, line 497
def /(x); memberwise(:/, x) end

Возвращает новый объект Tms, полученный в результате поэлементного деления отдельных значений времени этого объекта Tms на x. Этот метод и +() полезны для сбора статистики.

add () { || ... } Показать исходный код
# File lib/benchmark.rb, line 451
def add(&blk) # :yield:
  self + Benchmark.measure(&blk)
end

Возвращает новый объект Tms, значения времени которого равны сумме значений времени этого объекта Tms и времени, необходимого для выполнения блока кода (blk).

add! (&blk) Показать исходный код
# 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).

format (format = nil, *args) Показать исходный код
# 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, описывающий пользовательское и системное время ЦП, а также фактически затраченное время.

to_a () Показать исходный код
# File lib/benchmark.rb, line 541
def to_a
  [@label, @utime, @stime, @cutime, @cstime, @real]
end

Возвращает новый массив из 6 элементов: метка, пользовательское время ЦП, системное время ЦП, пользовательское время ЦП дочерних процессов, системное время ЦП дочерних процессов и фактически затраченное время.

to_h () Показать исходный код
# File lib/benchmark.rb, line 548
def to_h
  {
    label:  @label,
    utime:  @utime,
    stime:  @stime,
    cutime: @cutime,
    cstime: @cstime,
    real:   @real
  }
end

Возвращает хеш, содержащий те же данные, что и «to_a».

to_s () Показать исходный код
# File lib/benchmark.rb, line 531
def to_s
  format
end

То же, что и format.

Защищённые методы экземпляра

memberwise (op, x) Показать исходный код
# 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.

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API