Class: Nanoc::Telemetry::Summary

Inherits:
Object
  • Object
show all
Defined in:
lib/nanoc/telemetry/summary.rb

Defined Under Namespace

Classes: EmptySummaryError

Instance Method Summary collapse

Constructor Details

#initializeSummary

Returns a new instance of Summary



11
12
13
# File 'lib/nanoc/telemetry/summary.rb', line 11

def initialize
  @values = []
end

Instance Method Details

#avgObject



29
30
31
# File 'lib/nanoc/telemetry/summary.rb', line 29

def avg
  sum / count
end

#countObject



20
21
22
# File 'lib/nanoc/telemetry/summary.rb', line 20

def count
  @values.size
end

#maxObject



37
38
39
# File 'lib/nanoc/telemetry/summary.rb', line 37

def max
  quantile(1.0)
end

#minObject



33
34
35
# File 'lib/nanoc/telemetry/summary.rb', line 33

def min
  quantile(0.0)
end

#observe(value) ⇒ Object



15
16
17
18
# File 'lib/nanoc/telemetry/summary.rb', line 15

def observe(value)
  @values << value
  @sorted_values = nil
end

#quantile(fraction) ⇒ Object

Raises:



41
42
43
44
45
46
47
# File 'lib/nanoc/telemetry/summary.rb', line 41

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

#sumObject

Raises:



24
25
26
27
# File 'lib/nanoc/telemetry/summary.rb', line 24

def sum
  raise EmptySummaryError if @values.empty?
  @values.reduce(:+)
end