// Copyright 2020 The Go Authors. All rights reserved. // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. package metrics // Float64Histogram represents a distribution of float64 values. type Float64Histogram struct { // Counts contains the weights for each histogram bucket. The length of // Counts is equal to the length of Buckets (in the metric description) // plus one to account for the implicit minimum bucket. // // Given N buckets, the following is the mathematical relationship between // Counts and Buckets. // count[0] is the weight of the range (-inf, bucket[0]) // count[n] is the weight of the range [bucket[n], bucket[n+1]), for 0 < n < N-1 // count[N-1] is the weight of the range [bucket[N-1], inf) Counts []uint64 // Buckets contains the boundaries between histogram buckets, in increasing order. // // Because this slice contains boundaries, there are len(Buckets)+1 counts: // a count for all values less than the first boundary, a count covering each // [slice[i], slice[i+1]) interval, and a count for all values greater than or // equal to the last boundary. // // For a given metric name, the value of Buckets is guaranteed not to change // between calls until program exit. Buckets []float64 }