Class: Benchmark::Tms

Inherits:
Object
  • Object
show all
Defined in:
lib/benchmark.rb

Overview

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

Constant Summary collapse

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

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(u = 0.0, s = 0.0, cu = 0.0, cs = 0.0, real = 0.0, l = nil) ⇒ Tms

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



431
432
433
434
# File 'lib/benchmark.rb', line 431

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

Instance Attribute Details

#cstimeObject (readonly)

System CPU time of children



413
414
415
# File 'lib/benchmark.rb', line 413

def cstime
  @cstime
end

#cutimeObject (readonly)

User CPU time of children



410
411
412
# File 'lib/benchmark.rb', line 410

def cutime
  @cutime
end

#labelObject (readonly)

Label



422
423
424
# File 'lib/benchmark.rb', line 422

def label
  @label
end

#realObject (readonly)

Elapsed real time



416
417
418
# File 'lib/benchmark.rb', line 416

def real
  @real
end

#stimeObject (readonly)

System CPU time



407
408
409
# File 'lib/benchmark.rb', line 407

def stime
  @stime
end

#totalObject (readonly)

Total time, that is utime + stime + cutime + cstime



419
420
421
# File 'lib/benchmark.rb', line 419

def total
  @total
end

#utimeObject (readonly)

User CPU time



404
405
406
# File 'lib/benchmark.rb', line 404

def utime
  @utime
end

Instance Method Details

#*(x) ⇒ Object

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



476
# File 'lib/benchmark.rb', line 476

def *(x); memberwise(:*, x) end

#+(other) ⇒ Object

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.



463
# File 'lib/benchmark.rb', line 463

def +(other); memberwise(:+, other) end

#-(other) ⇒ Object

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



470
# File 'lib/benchmark.rb', line 470

def -(other); memberwise(:-, other) end

#/(x) ⇒ Object

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.



483
# File 'lib/benchmark.rb', line 483

def /(x); memberwise(:/, x) end

#add(&blk) ⇒ Object

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).



440
441
442
# File 'lib/benchmark.rb', line 440

def add(&blk) # :yield:
  self + Benchmark::measure(&blk)
end

#add!(&blk) ⇒ Object

An in-place version of #add.



447
448
449
450
451
452
453
454
455
# File 'lib/benchmark.rb', line 447

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

#format(arg0 = nil, *args) ⇒ Object

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 children’s user CPU time, as reported by Tms#cutime

%Y

Replaced by the children’s 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.



502
503
504
505
506
507
508
509
510
511
512
# File 'lib/benchmark.rb', line 502

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_aObject

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



527
528
529
# File 'lib/benchmark.rb', line 527

def to_a
  [@label, @utime, @stime, @cutime, @cstime, @real]
end

#to_sObject

Same as #format.



517
518
519
# File 'lib/benchmark.rb', line 517

def to_s
  format
end