Otter, 兼具高性能与高命中率的内存缓存

2023-12-25 17:23:40 +08:00
matrix1010  matrix1010

https://github.com/maypok86/otter

推荐一下最近新出的缓存库 Otter ,代码上采用无锁结构提高并发能力,缓存策略上则采用 S3-FIFO ,根据 benchmark 来看命中率相当不错。虽然我不是作者但是因为在 Theine 下有大量讨论我就一直关注着

相关讨论: https://github.com/Yiling-J/theine-go/issues/29

Hacker news: https://news.ycombinator.com/item?id=38745070

最近一直忙着 Dart/Flutter 开发 app 所以 Go 用的少了,等以后有空而且 Otter 用户足够多后,我也许会参考一下把 Theine 也改成无锁结构

1909 次点击
所在节点   Go 编程语言  Go 编程语言
8 条回复
NoOneNoBody
NoOneNoBody
2023-12-25 17:31:54 +08:00
Otter 是个开源浏览器的名字,好多年了,你是否考虑一下改名,只是建议,Otter 浏览器跟我没任何关系
https://www.otter-browser.org/
matrix1010
matrix1010
2023-12-25 17:37:42 +08:00
@NoOneNoBody 我也不是作者
Nazz
Nazz
2023-12-25 17:48:15 +08:00
otter 最近又优化了吧, 看 benchmark 混合读写速度非常惊人, 我把最小堆去掉估计也赶不上

goos: linux
goarch: amd64
pkg: github.com/lxzan/memorycache/benchmark
cpu: 13th Gen Intel(R) Core(TM) i5-1340P
BenchmarkMemoryCache_SetAndGet-4 17393630 79.82 ns/op 0 B/op 0 allocs/op
BenchmarkOtter_SetAndGet-4 36321264 29.74 ns/op 0 B/op 0 allocs/op
BenchmarkRistretto_SetAndGet-4 5968552 179.7 ns/op 32 B/op 1 allocs/op
BenchmarkTheine_SetAndGet-4 5518321 237.0 ns/op 0 B/op 0 allocs/op
PASS
ok github.com/lxzan/memorycache/benchmark 27.342s
matrix1010
matrix1010
2023-12-25 17:50:13 +08:00
@Nazz 应该是一直在优化
infinityv
infinityv
2023-12-25 19:17:52 +08:00
不懂就问 不知道性能和这个比如何 https://github.com/patrickmn/go-cache 这个看着很久没维护了
matrix1010
matrix1010
2023-12-25 19:27:56 +08:00
@infinityv 全局 rwmutex 估计只会被秒杀
Nazz
Nazz
2023-12-25 20:02:33 +08:00
读多写少也是 mutex 更快
matrix1010
matrix1010
2023-12-25 20:18:31 +08:00
@Nazz rwmutex 的 scale 能力一直有问题,比如最近我看到的这个 issue https://github.com/cockroachdb/cockroach/issues/109443

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

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

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

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

© 2021 V2EX