4个版本 (2个重大更新)
0.3.0 | 2024年7月12日 |
---|---|
0.2.0 | 2024年5月10日 |
0.1.1 | 2024年4月18日 |
0.1.0 | 2024年2月27日 |
在缓存分类中排名94
每月下载量547次
在 4 crates中使用
43KB
827 行
TinyUFO
TinyUFO是一个快速高效的内存缓存。它采用了最先进的S3-FIFO以及TinyLFU算法,以实现高吞吐量和高命中率。
用法
查看文档
性能比较
我们比较了TinyUFO与最常用的缓存算法lru,以及另一个优秀的缓存库moka,后者实现了TinyLFU。
命中率
下表显示了在不同缓存大小下,与lru相比,比较算法的缓存命中率。
缓存大小/总资产 | TinyUFO | TinyUFO - LRU | TinyUFO - moka (TinyLFU) |
---|---|---|---|
0.5% | 45.26% | +14.21pp | -0.33pp |
1% | 52.35% | +13.19pp | +1.69pp |
5% | 68.89% | +10.14pp | +1.91pp |
10% | 75.98% | +8.39pp | +1.59pp |
25% | 85.34% | +5.39pp | +0.95pp |
TinyUFO和moka在命中率上大大提高了lru的命中率。在这个工作负载下,TinyUFO表现更佳。有关TinyUFO与S3-FIFO不同的缓存性能评估,请参阅这篇论文。
速度
下表显示了每个缓存库每秒执行的操作次数。测试在x64 Linux桌面上使用8个线程进行。
设置 | TinyUFO | LRU | moka |
---|---|---|---|
纯读 | 148.7百万ops | 7.0百万ops | 14.1百万ops |
混合读写 | 80.9百万ops | 6.8百万ops | 16.6百万ops |
由于TinyUFO的无锁设计,它的性能远远超过其他产品。
内存开销
TinyUFO提供了一种紧凑模式,通过牺牲原始读取速度来换取更高的内存效率。这种节省是否值得取决于实际的大小和工作负载。对于小型内存资源,节省的内存意味着可以缓存更多内容。
下表显示了在特定工作负载下,存储零大小资产时,与比较的缓存库的内存分配(以字节为单位)。
缓存大小 | TinyUFO | TinyUFO紧凑 | LRU | moka |
---|---|---|---|---|
100 | 39,409 | 19,000 | 9,408 | 354,376 |
1000 | 236,053 | 86,352 | 128,512 | 535,888 |
10000 | 2,290,635 | 766,024 | 1,075,648 | 2,489,088 |
依赖关系
~1.8–7MB
~39K SLoC