8 releases
0.2.6 | Aug 15, 2024 |
---|---|
0.2.5 | Aug 14, 2024 |
0.1.0 | Aug 13, 2024 |
#166 in Caching
69KB
1.5K
SLoC
LightCache
Built on top of Hashbrowns RawTables | LightCache's straightfoward design makes implementing most eviction strategies a breeze.
Description
LightCache is designed with Rust's async patterns at heart: any reads and write to LightCache (or the underlying map) are always non-blocking. As well as providing a simple interface to work with it | LightCache is just as fast or faster as many other popular caching libraries.
Fundamentally | this is because we bound V: Clone
| so even if there was contention across threads | it's just a few atomic operations between them.
Instead larger V
should be wrapped in an Arc
before being inserted into the cache.
LightCache currently ships with a couple predefined eviction policies and some helpers for creating new ones.
Benchmarks
According to mokabench the base cache with no policy is the fastest available.
S3 (MokaBench)
Performed on Apple MBP 2021 Pro M1
Cache | Max Capacity | Clients | Inserts | Reads | Hit Ratio | Duration Secs |
---|---|---|---|---|---|---|
Mini Moka Unsync Cache | 100000 | 1 | 14695344 | 16407702 | 10.436 | 3.887 |
HashLink (LRU w/ Mutex) | 100000 | 1 | 16025830 | 16407702 | 2.327 | 2.965 |
HashLink (LRU w/ Mutex) | 100000 | 3 | 16025819 | 16407702 | 2.327 | 4.897 |
HashLink (LRU w/ Mutex) | 100000 | 6 | 16025888 | 16407702 | 2.327 | 5.980 |
QuickCache Sync Cache | 100000 | 1 | 14300847 | 16407702 | 12.841 | 4.835 |
QuickCache Sync Cache | 100000 | 3 | 14301577 | 16407702 | 12.836 | 2.190 |
QuickCache Sync Cache | 100000 | 6 | 14301078 | 16407702 | 12.839 | 2.441 |
LightCache Sync Cache | 100000 | 1 | 1689882 | 16407702 | 89.701 | 2.378 |
LightCache Sync Cache | 100000 | 3 | 1689882 | 16407702 | 89.701 | 0.904 |
LightCache Sync Cache | 100000 | 6 | 1689884 | 16407702 | 89.701 | 0.584 |
LightCache Sync Cache LRU | 100000 | 1 | 16025830 | 16407702 | 2.327 | 5.026 |
LightCache Sync Cache LRU | 100000 | 3 | 16025891 | 16407702 | 2.327 | 6.931 |
LightCache Sync Cache LRU | 100000 | 6 | 16025813 | 16407702 | 2.327 | 8.978 |
conc-map-bench results (dashmap vs internal LightMap)
Dependencies
~2.7–8.5MB
~62K SLoC