Spec-Zone.ru › Ruby 3.1

класс Benchmark::Tms

Родитель:
Объект

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

Константы

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 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 в качестве метки.

Методы публичного экземпляра

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

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

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

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

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

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

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

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

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

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

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

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

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

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

to_h() Показать исходный код
# File lib/benchmark.rb, line 536
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 519
def to_s
  format
end

Аналогично format.

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

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

Spec-Zone.ru

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