go memorycache v1.1.2 update: 使用四叉堆替换二叉堆

210 天前
 Nazz

GitHub

四叉堆高度更低, 对 CPU 缓存更友好(Down 方法的 4 个比较操作有 3 个在相邻的同一层), 每个 Set 操作有几十纳秒的提升.

benchmark

从压测结果看, 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
532 次点击
所在节点    分享创造
0 条回复

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/986747

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX