pub struct DistributedCounter<const BUCKETS: usize> { /* private fields */ }Expand description
A counter that minimizes slowdowns from contenation at the cost of increased memory usage.
Modeled on the “adaptive multi-counter” described by Travis Downs.
Use this counter type only if RelaxedCounter performs poorly. Then,
benchmark the performance of your code with DistributedCounter with
a bucket count of 1. Increase the number of buckets (up to your
available parallelism) until performance is satisfactory.
Trait Implementations§
Source§impl<const BUCKETS: usize> Counter for DistributedCounter<BUCKETS>
impl<const BUCKETS: usize> Counter for DistributedCounter<BUCKETS>
Source§fn add_assign(&self, n: isize)
fn add_assign(&self, n: isize)
Eventually increase the value of this counter by
n.Source§fn sub_assign(&self, n: isize)
fn sub_assign(&self, n: isize)
Eventually decrease the value of this counter by
n.Auto Trait Implementations§
impl<const BUCKETS: usize> !Freeze for DistributedCounter<BUCKETS>
impl<const BUCKETS: usize> RefUnwindSafe for DistributedCounter<BUCKETS>
impl<const BUCKETS: usize> Send for DistributedCounter<BUCKETS>
impl<const BUCKETS: usize> Sync for DistributedCounter<BUCKETS>
impl<const BUCKETS: usize> Unpin for DistributedCounter<BUCKETS>
impl<const BUCKETS: usize> UnwindSafe for DistributedCounter<BUCKETS>
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more