pub struct Cache(/* private fields */);
Implementations§
source§impl Cache
impl Cache
sourcepub fn new_lru_cache(capacity: size_t) -> Cache
pub fn new_lru_cache(capacity: size_t) -> Cache
Creates an LRU cache with capacity in bytes.
sourcepub fn new_hyper_clock_cache(
capacity: size_t,
estimated_entry_charge: size_t,
) -> Cache
pub fn new_hyper_clock_cache( capacity: size_t, estimated_entry_charge: size_t, ) -> Cache
Creates a HyperClockCache with capacity in bytes.
estimated_entry_charge
is an important tuning parameter. The optimal
choice at any given time is
(cache.get_usage() - 64 * cache.get_table_address_count()) / cache.get_occupancy_count()
, or approximately cache.get_usage() / cache.get_occupancy_count()
.
However, the value cannot be changed dynamically, so as the cache composition changes at runtime, the following tradeoffs apply:
- If the estimate is substantially too high (e.g., 25% higher), the cache may have to evict entries to prevent load factors that would dramatically affect lookup times.
- If the estimate is substantially too low (e.g., less than half), then meta data space overhead is substantially higher.
The latter is generally preferable, and picking the larger of block size and meta data block size is a reasonable choice that errs towards this side.
sourcepub fn get_pinned_usage(&self) -> usize
pub fn get_pinned_usage(&self) -> usize
Returns the pinned memory usage in bytes.
sourcepub fn set_capacity(&mut self, capacity: size_t)
pub fn set_capacity(&mut self, capacity: size_t)
Sets cache capacity in bytes.
Trait Implementations§
Auto Trait Implementations§
impl Freeze for Cache
impl RefUnwindSafe for Cache
impl Send for Cache
impl Sync for Cache
impl Unpin for Cache
impl UnwindSafe for Cache
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
source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
source§default unsafe fn clone_to_uninit(&self, dst: *mut T)
default unsafe fn clone_to_uninit(&self, dst: *mut T)
🔬This is a nightly-only experimental API. (
clone_to_uninit
)