Definition at line 20 of file nway_lru_cache.hpp.
Public Member Functions | |
NWayLRU (size_t ways, size_t way_size, const Hash &hash=Hash(), const Equal &equal=Equal()) | |
void | Put (const T &key, U value) |
template<typename Validator> | |
std::optional< U > | Get (const T &key, Validator validator) |
std::optional< U > | Get (const T &key) |
U | GetOr (const T &key, const U &default_value) |
void | Invalidate () |
void | InvalidateByKey (const T &key) |
template<typename Function> | |
void | VisitAll (Function func) const |
Iterates over all items. May be slow for big caches. | |
size_t | GetSize () const |
void | UpdateWaySize (size_t way_size) |
void | Write (dump::Writer &writer) const |
void | Read (dump::Reader &reader) |
void | SetDumper (std::shared_ptr< dump::Dumper > dumper) |
cache::NWayLRU< T, U, Hash, Eq >::NWayLRU | ( | size_t | ways, |
size_t | way_size, | ||
const Hash & | hash = Hash(), | ||
const Equal & | equal = Equal() ) |
ways | is the number of ways (a.k.a. shards, internal hash-maps), into which elements are distributed based on their hash. Each shard is protected by an individual mutex. Larger ways means more internal hash-map instances and more memory usage, but less contention. A good starting point is ways=16 . If you encounter contention, you can increase ways to something on the order of 256 or whatever your RAM constraints allow. |
way_size | is the maximum allowed amount of elements per way. When the size of a way reaches this number, existing elements are deleted according to the LRU policy. |
hash | is the instance of Hash function to use, in case of a custom stateful Hash . |
equal | is the instance of Equal function to use, in case of a custom stateful Equal . |
The maximum total number of elements is ways * way_size
.
Definition at line 93 of file nway_lru_cache.hpp.
|
inline |
Definition at line 45 of file nway_lru_cache.hpp.
std::optional< U > cache::NWayLRU< T, U, Hash, Eq >::Get | ( | const T & | key, |
Validator | validator ) |
Definition at line 114 of file nway_lru_cache.hpp.
U cache::NWayLRU< T, U, Hash, Eq >::GetOr | ( | const T & | key, |
const U & | default_value ) |
Definition at line 138 of file nway_lru_cache.hpp.
size_t cache::NWayLRU< T, U, Hash, Eq >::GetSize | ( | ) | const |
Definition at line 163 of file nway_lru_cache.hpp.
void cache::NWayLRU< T, U, Hash, Eq >::Invalidate | ( | ) |
Definition at line 145 of file nway_lru_cache.hpp.
void cache::NWayLRU< T, U, Hash, Eq >::InvalidateByKey | ( | const T & | key | ) |
Definition at line 128 of file nway_lru_cache.hpp.
void cache::NWayLRU< T, U, Hash, Eq >::Put | ( | const T & | key, |
U | value ) |
Definition at line 103 of file nway_lru_cache.hpp.
void cache::NWayLRU< T, U, Hash, Equal >::Read | ( | dump::Reader & | reader | ) |
Definition at line 209 of file nway_lru_cache.hpp.
void cache::NWayLRU< T, U, Hash, Equal >::SetDumper | ( | std::shared_ptr< dump::Dumper > | dumper | ) |
The dump::Dumper will be notified of any cache updates. This method is not thread-safe.
Definition at line 231 of file nway_lru_cache.hpp.
void cache::NWayLRU< T, U, Hash, Eq >::UpdateWaySize | ( | size_t | way_size | ) |
For the description of way_size
, see the cache::NWayLRU::NWayLRU constructor.
Definition at line 173 of file nway_lru_cache.hpp.
void cache::NWayLRU< T, U, Hash, Eq >::VisitAll | ( | Function | func | ) | const |
Iterates over all items. May be slow for big caches.
Definition at line 155 of file nway_lru_cache.hpp.
void cache::NWayLRU< T, U, Hash, Equal >::Write | ( | dump::Writer & | writer | ) | const |
Definition at line 193 of file nway_lru_cache.hpp.