class Spectator::DistributionSummary
Track the sample distribution of events. An example would be the response sizes for requests hitting an http server.
The class will report measurements for the total amount, the count, max, and the total of the square of the amounts recorded (useful for computing a standard deviation)
Public Class Methods
new(id)
click to toggle source
Initialize a new DistributionSummary
instance with a given id
# File lib/spectator/distribution_summary.rb, line 12 def initialize(id) @id = id @count = AtomicNumber.new(0) @total_amount = AtomicNumber.new(0) @total_sq = AtomicNumber.new(0) @max = AtomicNumber.new(Float::NAN) end
Public Instance Methods
count()
click to toggle source
Get the current amount
# File lib/spectator/distribution_summary.rb, line 30 def count @count.get end
measure()
click to toggle source
Get a list of measurements, and reset the stats The stats returned are the current count, the total amount, the sum of the square of the amounts recorded, and the max value
# File lib/spectator/distribution_summary.rb, line 42 def measure cnt = Measure.new(@id.with_stat('count'), @count.get_and_set(0)) tot = Measure.new(@id.with_stat('totalAmount'), @total_amount.get_and_set(0)) tot_sq = Measure.new(@id.with_stat('totalOfSquares'), @total_sq.get_and_set(0)) mx = Measure.new(@id.with_stat('max'), @max.get_and_set(Float::NAN)) [cnt, tot, tot_sq, mx] end
record(amount)
click to toggle source
Update the statistics kept by the summary with the specified amount.
# File lib/spectator/distribution_summary.rb, line 21 def record(amount) return if amount < 0 @count.add_and_get(1) @total_amount.add_and_get(amount) @total_sq.add_and_get(amount * amount) @max.max(amount) end
total_amount()
click to toggle source
Return the total amount
# File lib/spectator/distribution_summary.rb, line 35 def total_amount @total_amount.get end