diff --git a/crates/trc/src/atomics/histogram.rs b/crates/trc/src/atomics/histogram.rs index 710a398ea..c52c45574 100644 --- a/crates/trc/src/atomics/histogram.rs +++ b/crates/trc/src/atomics/histogram.rs @@ -8,11 +8,11 @@ use std::sync::atomic::{AtomicU64, Ordering}; use crate::MetricType; -use super::array::AtomicU64Array; +use super::array::AtomicU32Array; pub struct AtomicHistogram { id: MetricType, - buckets: AtomicU64Array, + buckets: AtomicU32Array, upper_bounds: [u64; N], sum: AtomicU64, count: AtomicU64, @@ -23,7 +23,7 @@ pub struct AtomicHistogram { impl AtomicHistogram { pub const fn new(id: MetricType, upper_bounds: [u64; N]) -> Self { Self { - buckets: AtomicU64Array::new(), + buckets: AtomicU32Array::new(), upper_bounds, sum: AtomicU64::new(0), count: AtomicU64::new(0), @@ -41,7 +41,7 @@ impl AtomicHistogram { for (idx, upper_bound) in self.upper_bounds.iter().enumerate() { if value < *upper_bound { - self.buckets.add(idx, value); + self.buckets.add(idx, 1); return; } } @@ -93,13 +93,13 @@ impl AtomicHistogram { self.buckets .inner() .iter() - .map(|bucket| bucket.load(Ordering::Relaxed)) + .map(|bucket| bucket.load(Ordering::Relaxed) as u64) } pub fn buckets_vec(&self) -> Vec { let mut vec = Vec::with_capacity(N); for bucket in self.buckets.inner().iter() { - vec.push(bucket.load(Ordering::Relaxed)); + vec.push(bucket.load(Ordering::Relaxed) as u64); } vec }