Sha256: 34cf050efdeee48a595be8761b9aa71ccd61b78395a2ccfee29da8b8e28faf54
Contents?: true
Size: 930 Bytes
Versions: 1
Compression:
Stored size: 930 Bytes
Contents
# frozen_string_literal: true module DDTelemetry class Summary class EmptySummaryError < StandardError def message 'Cannot calculate quantile for empty summary' end end def initialize @values = [] end def observe(value) @values << value @sorted_values = nil end def count @values.size end def sum raise EmptySummaryError if @values.empty? @values.reduce(:+) end def avg sum / count end def min quantile(0.0) end def max quantile(1.0) end def quantile(fraction) raise EmptySummaryError if @values.empty? target = (@values.size - 1) * fraction.to_f interp = target % 1.0 sorted_values[target.floor] * (1.0 - interp) + sorted_values[target.ceil] * interp end private def sorted_values @sorted_values ||= @values.sort end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
ddtelemetry-1.0.0a1 | lib/ddtelemetry/summary.rb |