CacheInfo

Struct CacheInfo 

Source
pub struct CacheInfo {
    pub level: CacheLevel,
    pub cache_type: CacheType,
    pub size_bytes: u64,
    pub line_size_bytes: usize,
}
Expand description

Represents detailed information about a specific CPU cache.

This structure provides insights into the cache’s characteristics, such as its level in the memory hierarchy, its designated type (e.g., for data or instructions), its total size, and the size of its cache lines. This information is crucial for performance-sensitive applications that need to optimize memory access patterns.

Fields§

§level: CacheLevel

The hierarchical level of the cache (e.g., L1, L2, L3).

Lower levels (like L1) are smaller, faster, and closer to the CPU core, while higher levels (like L3) are larger, slower, and typically shared among multiple cores.

§cache_type: CacheType

The designated purpose of the cache.

This can be:

  • Data: Cache dedicated to storing data.
  • Instruction: Cache dedicated to storing executable instructions.
  • Unified: Cache used for both data and instructions.
§size_bytes: u64

The total size of the cache, expressed in bytes.

For example, a value of 32768 would represent a 32KB cache.

§line_size_bytes: usize

The size of a single cache line (also known as a cache block), in bytes.

Data is transferred between the cache and main memory in units of cache lines. Knowing the line size can be important for optimizing data layout to avoid issues like false sharing in multi-threaded applications.

Trait Implementations§

Source§

impl Clone for CacheInfo

Source§

fn clone(&self) -> CacheInfo

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 CacheInfo

Source§

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

Formats the value using the given formatter. Read more
Source§

impl Copy for CacheInfo

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.