class RailsApiBenchmark::ResultSet

Attributes

results[R]

Public Class Methods

new() click to toggle source
# File lib/rails_api_benchmark/result_set.rb, line 5
def initialize
  @results = []
end

Public Instance Methods

add(endpoint, results) click to toggle source
# File lib/rails_api_benchmark/result_set.rb, line 9
def add(endpoint, results)
  @results << { endpoint: endpoint, results: results }
end
averages() click to toggle source
# File lib/rails_api_benchmark/result_set.rb, line 13
def averages
  rps = @results.map { |v| v[:results][:req_per_sec] }.compact
  rt = @results.map { |v| v[:results][:response_time] }.compact

  avg_rps = rps.inject(0) { |sum, v| sum + v.to_i } / rps.count
  avg_rt = rt.inject(0) { |sum, v| sum + v.to_i } / rt.count

  { req_per_sec: avg_rps, response_time: avg_rt }
end
compute_relative_speed() click to toggle source

Returns only the results with the relative speed

# File lib/rails_api_benchmark/result_set.rb, line 24
def compute_relative_speed
  @results = @results.map do |r|
    avgs = averages
    res = r[:results]

    avg_rt = avgs[:response_time]
    avg_rps = avgs[:req_per_sec]

    f_rt = ((res[:response_time].to_f - avg_rt) / avg_rt * 100).round(1)
    f_rps = ((res[:req_per_sec].to_f - avg_rps) / avg_rps * 100).round(1)
    r.merge(factors: { response_time: f_rt, req_per_sec: f_rps })
  end
end
each_result() { |r, r| ... } click to toggle source

Use it like this: resultset.each_result do |endpoint, results|

...

end

# File lib/rails_api_benchmark/result_set.rb, line 42
def each_result
  @results.each do |r|
    yield r[:endpoint], r[:results]
  end
end