先上链接和 benchmarks:
https://github.com/Yiling-J/theine-go
cpu: Intel(R) Core(TM) i7-9750H CPU @ 2.60GHz
BenchmarkGetTheineParallel-12 32432190 36.39 ns/op 0 B/op 0 allocs/op
BenchmarkGetRistrettoParallel-12 63978058 18.86 ns/op 17 B/op 1 allocs/op
BenchmarkSetTheineParallel-12 20791834 84.49 ns/op 0 B/op 0 allocs/op
BenchmarkSetRistrettoParallel-12 23354626 65.53 ns/op 116 B/op 3 allocs/op
BenchmarkZipfTheineParallel-12 14771362 74.72 ns/op 1 B/op 0 allocs/op
BenchmarkZipfRistrettoParallel-12 21031435 61.82 ns/op 100 B/op 3 allocs/op
由于充分利用 sync pool 以及 atomic ,Theine 的 GC 压力很低,同时有着和 Ristretto 同一数量级的性能。
相比于 Ristretto ,Theine 最大的特点其实是极高的缓存命中率,benchmark 结果都是图片,可以直接去 README 看: hit-ratios。简单来说 Ristretto 是通过丢弃请求来达到高性能,代价就是高写入下大量 Set 请求丢弃导致缓存命中率大幅下降。而 Theine 则通过合理的架构避免了这个问题。
同时 Theine 也有 Python 版本: https://github.com/Yiling-J/theine. 所以你也许会觉得看到这个名字眼熟。Theine-Go 的 TinyLFU 部分其实是直接从 Python 版本转过来的,但在提高性能方面 Python 和 Go 版本的 Theine 都根据对应的语言特性做了优化
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.