四叉堆高度更低, 对 CPU 缓存更友好(Down 方法的 4 个比较操作有 3 个在相邻的同一层), 每个 Set 操作有几十纳秒的提升.
从压测结果看, MemoryCache 的 Get 性能略高于 Ristretto, Set 性能远高于它. https://github.com/lxzan/memorycache/blob/main/benchmark/benchmark_test.go
go test -benchmem -run=^$ -bench . github.com/lxzan/memorycache/benchmark
goos: linux
goarch: amd64
pkg: github.com/lxzan/memorycache/benchmark
cpu: AMD Ryzen 5 PRO 4650G with Radeon Graphics
BenchmarkMemoryCache_Set-12 11499579 101.7 ns/op 16 B/op 0 allocs/op
BenchmarkMemoryCache_Get-12 26326636 45.97 ns/op 0 B/op 0 allocs/op
BenchmarkRistretto_Set-12 12341542 275.4 ns/op 119 B/op 2 allocs/op
BenchmarkRistretto_Get-12 22825676 50.12 ns/op 16 B/op 1 allocs/op
PASS
ok github.com/lxzan/memorycache/benchmark 20.107s
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.