Struct LfuCacheMetrics

Source
pub struct LfuCacheMetrics {
    pub core: CoreCacheMetrics,
    pub min_frequency: u64,
    pub max_frequency: u64,
    pub total_frequency_increments: u64,
    pub active_frequency_levels: u64,
}
Expand description

LFU-specific metrics (extends CoreCacheMetrics)

This struct contains metrics specific to the LFU (Least Frequently Used) cache algorithm. LFU tracks frequency of access for each item, so these metrics focus on frequency distribution and access patterns.

Fields§

§core: CoreCacheMetrics

Core metrics common to all cache algorithms

§min_frequency: u64

Current minimum frequency in the cache

§max_frequency: u64

Current maximum frequency in the cache

§total_frequency_increments: u64

Total number of frequency increments (every cache hit increases frequency)

§active_frequency_levels: u64

Number of unique frequency levels currently in use

Implementations§

Source§

impl LfuCacheMetrics

Source

pub fn new(max_cache_size_bytes: u64) -> Self

Creates a new LfuCacheMetrics instance with the specified maximum cache size

§Arguments
  • max_cache_size_bytes - The maximum allowed cache size in bytes
Source

pub fn record_frequency_increment( &mut self, _old_frequency: usize, new_frequency: usize, )

Records a frequency increment (when an item is accessed and its frequency increases)

§Arguments
  • old_frequency - The previous frequency value
  • new_frequency - The new frequency value for the accessed item
Source

pub fn record_frequency_hit(&mut self, object_size: u64, frequency: usize)

Records a cache hit with frequency information

§Arguments
  • object_size - Size of the object that was served from cache (in bytes)
  • frequency - Current frequency of the accessed item
Source

pub fn update_frequency_levels<T>( &mut self, frequency_lists: &BTreeMap<usize, T>, )

Updates the frequency levels based on current frequency lists

§Arguments
  • frequency_lists - Map of frequency to list of items at that frequency
Source

pub fn record_miss(&mut self, object_size: u64)

Records a cache miss for LFU metrics

§Arguments
  • object_size - Size of the object that was requested (in bytes)
Source

pub fn update_active_frequency_levels(&mut self, levels: u64)

Updates the count of active frequency levels

§Arguments
  • levels - The number of different frequency levels currently in use
Source

pub fn average_frequency(&self) -> f64

Calculates the average frequency of accesses

§Returns

Average frequency per item access, or 0.0 if no hits have occurred

Source

pub fn frequency_range(&self) -> u64

Calculates the frequency range (max - min)

§Returns

The range of frequencies currently in the cache

Source

pub fn to_btreemap(&self) -> BTreeMap<String, f64>

Converts LFU metrics to a BTreeMap for reporting

This method returns all metrics relevant to the LFU cache algorithm, including both core metrics and LFU-specific frequency metrics.

Uses BTreeMap to ensure consistent, deterministic ordering of metrics.

§Returns

A BTreeMap containing all LFU cache metrics as key-value pairs

Trait Implementations§

Source§

impl CacheMetrics for LfuCacheMetrics

Source§

fn metrics(&self) -> BTreeMap<String, f64>

Returns all LFU cache metrics as key-value pairs in deterministic order

§Returns

A BTreeMap containing all metrics tracked by this LFU cache instance

Source§

fn algorithm_name(&self) -> &'static str

Returns the algorithm name for this cache implementation

§Returns

“LFU” - identifying this as a Least Frequently Used cache

Source§

impl Clone for LfuCacheMetrics

Source§

fn clone(&self) -> LfuCacheMetrics

Returns a duplicate of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for LfuCacheMetrics

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.