| // 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 |
| } |