Parent

Methods

PerfInfo

Attributes

entries[R]
iterations[R]
keys[R]
options[R]
request_count[R]
requests_per_key[R]
runs[R]

Public Class Methods

new(file) click to toggle source
# File lib/railsbench/perf_info.rb, line 69
def initialize(file)
  @entries = []
  file.each_line do |line|
    case line
    when /^.*perf_([a-zA-Z.]+)\s+(\d+)\s+(.*)$/
      @iterations = $2.to_i
      @options = $3
    when /\s+user\s+system\s+total\s+real/
      @entries << PerfEntry.new
    when /^(.*)\s+([\d\.]+)\s+([\d\.]+)\s+([\d\.]+)\s+\(\s*([\d\.]+)\s*\)$/
      key, time = $1.strip, $5.to_f
      if key == "loading environment"
        @entries.last.load_time = time
      else
        @entries.last.keys << key
        @entries.last.timings[key] = time
      end
    when /^GC.collections=(\d+), GC.time=([\d\.]+)$/
      @entries.last.gc_calls, @entries.last.gc_time = [$1.to_i,$2.to_f]
      @gc_stats = true
    end
  end

  @entries.each{ |e| e.total_time =  e.timings.values.sum }
  @keys = @entries.first.keys
  @runs = @entries.length
  if @keys.length == 1 && @keys[0] =~ /\((\d+) urls\)$/
    @requests_per_key = $1.to_i
  else
    @requests_per_key = 1
  end
  @request_count = @iterations * @keys.length * @requests_per_key
  @timings = PerfSummaries.inject({}){ |hash, method| hash[method] = Hash.new; hash }

  @keys.each do |k|
    a = @entries.map{|e| e.timings[k]}
    [:min, :max, :mean].each do |method|
      @timings[method][k] = a.send(method)
    end
    mean = @timings[:mean][k]
    stddev = @timings[:stddev][k] = a.send(:stddev, mean)
    @timings[:stddev_percentage][k] = stddev_percentage(stddev, mean)
  end

  PerfAttributes.each do |attr|
    next if attr.to_s =~ /^gc_/ and !gc_stats?
    a = @entries.map{|e| e.send attr}
    [:min, :max, :mean].each do |method|
      instance_variable_set "@#{attr}_#{method}", (a.send method)
    end
    mean = instance_variable_get "@#{attr}_mean"
    stddev = instance_variable_set "@#{attr}_stddev", (a.send :stddev, mean)
    instance_variable_set "@#{attr}_stddev_percentage", stddev_percentage(stddev, mean)
  end

end

Public Instance Methods

gc_stats?() click to toggle source
# File lib/railsbench/perf_info.rb, line 58
def gc_stats?
  @gc_stats
end

[Validate]

Generated with the Darkfish Rdoc Generator 2.