Module: Philiprehberger::JobMeter::Stats
- Defined in:
- lib/philiprehberger/job_meter/stats.rb
Class Method Summary collapse
- .compute(durations, successes) ⇒ Object
- .percentile(sorted_values, pct) ⇒ Object
- .success_rate(successes) ⇒ Object
Class Method Details
.compute(durations, successes) ⇒ Object
23 24 25 26 27 28 29 30 31 32 33 34 |
# File 'lib/philiprehberger/job_meter/stats.rb', line 23 def compute(durations, successes) sorted = durations.sort { avg_duration: sorted.sum.to_f / sorted.length, p50_duration: percentile(sorted, 50), p95_duration: percentile(sorted, 95), p99_duration: percentile(sorted, 99), success_rate: success_rate(successes), total: successes.length, failed: successes.count(false) } end |
.percentile(sorted_values, pct) ⇒ Object
8 9 10 11 12 13 14 15 |
# File 'lib/philiprehberger/job_meter/stats.rb', line 8 def percentile(sorted_values, pct) return 0.0 if sorted_values.empty? rank = (pct / 100.0 * (sorted_values.length - 1)) lower = sorted_values[rank.floor] upper = sorted_values[rank.ceil] lower + ((upper - lower) * (rank - rank.floor)) end |
.success_rate(successes) ⇒ Object
17 18 19 20 21 |
# File 'lib/philiprehberger/job_meter/stats.rb', line 17 def success_rate(successes) return 0.0 if successes.empty? successes.count(true).to_f / successes.length end |