Class: RailsApiBenchmark::ResultSet
- Inherits:
-
Object
- Object
- RailsApiBenchmark::ResultSet
- Defined in:
- lib/rails_api_benchmark/result_set.rb
Instance Attribute Summary collapse
-
#results ⇒ Object
readonly
Returns the value of attribute results.
Instance Method Summary collapse
- #add(endpoint, results) ⇒ Object
- #averages ⇒ Object
-
#compute_relative_speed ⇒ Object
Returns only the results with the relative speed.
-
#each_result ⇒ Object
Use it like this: resultset.each_result do |endpoint, results| …
-
#initialize ⇒ ResultSet
constructor
A new instance of ResultSet.
Constructor Details
#initialize ⇒ ResultSet
Returns a new instance of ResultSet.
5 6 7 |
# File 'lib/rails_api_benchmark/result_set.rb', line 5 def initialize @results = [] end |
Instance Attribute Details
#results ⇒ Object (readonly)
Returns the value of attribute results.
3 4 5 |
# File 'lib/rails_api_benchmark/result_set.rb', line 3 def results @results end |
Instance Method Details
#add(endpoint, results) ⇒ Object
9 10 11 |
# File 'lib/rails_api_benchmark/result_set.rb', line 9 def add(endpoint, results) @results << { endpoint: endpoint, results: results } end |
#averages ⇒ Object
13 14 15 16 17 18 19 20 21 |
# 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 ⇒ Object
Returns only the results with the relative speed
24 25 26 27 28 29 30 31 32 33 34 35 36 |
# 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 ⇒ Object
Use it like this: resultset.each_result do |endpoint, results|
...
end
42 43 44 45 46 |
# File 'lib/rails_api_benchmark/result_set.rb', line 42 def each_result @results.each do |r| yield r[:endpoint], r[:results] end end |