![]() |
Belle II Software
release-08-02-06
|
Class implementing a generic Most Recently Used cache. More...
#include <MRUCache.h>
Public Types | |
typedef std::pair< KEY, VALUE > | value_type |
type of elements stored in the cache | |
typedef boost::multi_index_container< value_type, boost::multi_index::indexed_by< boost::multi_index::sequenced<>, boost::multi_index::hashed_unique< boost::multi_index::member< value_type, KEY, &value_type::first > > > > | container_type |
type of container for the elements | |
typedef container_type::const_iterator | iterator |
iterator over all cached items, sorted by access: most recent used first | |
typedef container_type::template nth_index< 1 >::type::const_iterator | hash_iterator |
iterator over the hash index to the items | |
Public Member Functions | |
MRUCache (size_t maxSize) | |
Constructor setting the maximum number of cached items. More... | |
void | insert (const KEY &key, const VALUE &value) |
Insert a key value pair into the cache. More... | |
void | insert (const value_type &item) |
Insert a key value pair into the cache. More... | |
bool | retrieve (const KEY &key, VALUE &value) |
Retrieve a value from the cache if it exists. More... | |
iterator | begin () const |
Return iterator to the begin of the cache. More... | |
iterator | end () const |
Return iterator to the end of the cache. | |
size_t | size () const |
Return actual size of the cache. | |
void | clear () |
Clear cache. | |
void | setMaxSize (size_t maxSize) |
Set maximum number of cache entries. | |
size_t | getMaxSize () const |
Get maximum number of cache entries. | |
unsigned int | getHits () const |
Get number of cache hits since creation/last clear. | |
unsigned int | getMisses () const |
Get number of cache misses since creation/last clear. | |
unsigned int | getOverflows () const |
Get number of overflows (dropped items) since creation/last clear. | |
Protected Member Functions | |
void | update (const iterator &item) |
Update an item, thus marking it as recently accessed and putting it to the front of the list. More... | |
Protected Attributes | |
container_type | m_container |
Container for the items. | |
size_t | m_maxSize |
Maximum size of the cache. | |
unsigned int | m_hits |
Number of hits. | |
unsigned int | m_misses |
Number of misses. | |
unsigned int | m_overflows |
Number of overflows. | |
Class implementing a generic Most Recently Used cache.
It can be used to cache values which are needed repeatedly. The size is limited so only the N most recently accessed elements will be kept.
Usage: if you have elements of type VALUE which are uniquely identified by something of type KEY and you want to cache the last 100 of them because computation is expensive, than you can define a cache somewhere:
MRUCache<KEY, VALUE> cache(100);
and in your function you can do
VALUE calculate(const KEY &key){ VALUE value; if(!cache.retrieve(key,value)){ //calculate value here //and finally add to cache cache.insert(key,value); } return value; }
KEY | Key type to identify entries of the cache |
VALUE | Value type of the cache entries |
Definition at line 48 of file MRUCache.h.
|
inlineexplicit |
Constructor setting the maximum number of cached items.
maxSize | Maximum number of cached Items |
Definition at line 71 of file MRUCache.h.
|
inline |
Return iterator to the begin of the cache.
Items are sorted by access: most recently inserted
Definition at line 118 of file MRUCache.h.
|
inline |
Insert a key value pair into the cache.
If the maximum size is reached, the least recently used item is dropped
key | key to the new item |
value | to the new item |
Definition at line 79 of file MRUCache.h.
|
inline |
Insert a key value pair into the cache.
If the maximum size is reached, the least recently used item is dropped
item | std::pair containing key and value of the new item |
Definition at line 86 of file MRUCache.h.
|
inline |
Retrieve a value from the cache if it exists.
[in] | key | key for the value to retrieve |
[out] | value | reference to the value. Will only be modified if an item is found |
Definition at line 104 of file MRUCache.h.
|
inlineprotected |
Update an item, thus marking it as recently accessed and putting it to the front of the list.
item | iterator to the item to update |
Definition at line 150 of file MRUCache.h.