# Benchmark::Tms (Class)

In: | benchmark.rb
Parent: | Object

A data object, representing the times associated with a benchmark measurement.

## Methods

* + - / add add! format new to_a to_s

## Constants

CAPTION | = | " user system total real\n"
FMTSTR | = | "%10.6u %10.6y %10.6t %10.6r\n"

## Attributes

cstime | [R] | System CPU time of children
cutime | [R] | User CPU time of children
label | [R] | Label
real | [R] | Elapsed real time
stime | [R] | System CPU time
total | [R] | Total time, that is utime + stime + cutime + cstime
utime | [R] | User CPU time

## Public Class methods

new(u = 0.0, s = 0.0, cu = 0.0, cs = 0.0, real = 0.0, l = nil)

Returns a initialized Tms object which has u as the user CPU time, s as the system CPU time, cu as the childrens’ user CPU time, cs as the childrens’ system CPU time, real as the elapsed real time and l as the label.

[Source]

    # File benchmark.rb, line 458
        def initialize(u = 0.0, s = 0.0, cu = 0.0, cs = 0.0, real = 0.0, l = nil)
          @utime, @stime, @cutime, @cstime, @real, @label = u, s, cu, cs, real, l
          @total = @utime + @stime + @cutime + @cstime
        end

## Public Instance methods

add() {|| ...}

Returns a new Tms object whose times are the sum of the times for this Tms object, plus the time required to execute the code block (blk).

[Source]

    # File benchmark.rb, line 467
        def add(&blk) # :yield:

          self + Benchmark::measure(&blk)
        end

add!()

An in-place version of add.

[Source]

    # File benchmark.rb, line 474
        def add!
          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

+(other)

Returns a new Tms object obtained by memberwise summation of the individual times for this Tms object with those of the other Tms object. This method and #/() are useful for taking statistics.

[Source]

    # File benchmark.rb, line 490
        def +(other); memberwise(:+, other) end

-(other)

Returns a new Tms object obtained by memberwise subtraction of the individual times for the other Tms object from those of this Tms object.

[Source]

    # File benchmark.rb, line 497
        def -(other); memberwise(:-, other) end

*(x)

Returns a new Tms object obtained by memberwise multiplication of the individual times for this Tms object by x.

[Source]

    # File benchmark.rb, line 503
        def *(x); memberwise(:*, x) end

/(x)

Returns a new Tms object obtained by memberwise division of the individual times for this Tms object by x. This method and #+() are useful for taking statistics.

[Source]

    # File benchmark.rb, line 510
        def /(x); memberwise(:/, x) end

format(arg0 = nil, *args)

Returns the contents of this Tms object as a formatted string, according to a format string like that passed to Kernel.format. In addition, format accepts the following extensions:

`%u`: | Replaced by the user CPU time, as reported by Tms#utime.
`%y`: | Replaced by the system CPU time, as reported by stime (Mnemonic: y of "s*y*stem")
`%U`: | Replaced by the childrens’ user CPU time, as reported by Tms#cutime
`%Y`: | Replaced by the childrens’ system CPU time, as reported by Tms#cstime
`%t`: | Replaced by the total CPU time, as reported by Tms#total
`%r`: | Replaced by the elapsed real time, as reported by Tms#real
`%n`: | Replaced by the label string, as reported by Tms#label (Mnemonic: n of "*n*ame")

If fmtstr is not given, FMTSTR is used as default value, detailing the user, system and real elapsed time.

[Source]

    # File benchmark.rb, line 529
        def format(arg0 = nil, *args)
          fmtstr = (arg0 || FMTSTR).dup
          fmtstr.gsub!(/(%[-+\.\d]*)n/){"#{$1}s" % label}
          fmtstr.gsub!(/(%[-+\.\d]*)u/){"#{$1}f" % utime}
          fmtstr.gsub!(/(%[-+\.\d]*)y/){"#{$1}f" % stime}
          fmtstr.gsub!(/(%[-+\.\d]*)U/){"#{$1}f" % cutime}
          fmtstr.gsub!(/(%[-+\.\d]*)Y/){"#{$1}f" % cstime}
          fmtstr.gsub!(/(%[-+\.\d]*)t/){"#{$1}f" % total}
          fmtstr.gsub!(/(%[-+\.\d]*)r/){"(#{$1}f)" % real}
          arg0 ? Kernel::format(fmtstr, *args) : fmtstr
        end

to_s()

Same as format.

[Source]

    # File benchmark.rb, line 544
        def to_s
          format
        end

to_a()

Returns a new 6-element array, consisting of the label, user CPU time, system CPU time, childrens’ user CPU time, childrens’ system CPU time and elapsed real time.

[Source]

    # File benchmark.rb, line 554
        def to_a
          [@label, @utime, @stime, @cutime, @cstime, @real]
        end

[Validate]