肝了好几天, 把 nginx 红黑树移植了过来. 但是我拓展的区间查询方法有点慢.
慢的原因主要是每次只能查出来一个结果, 需要拿上一次的结果进行比较, 如果 limit 10 相当于调用了 10 次查询. 有什么优化办法吗?
仓库地址: https://github.com/lxzan/dao
package main
import (
"github.com/lxzan/dao"
"github.com/lxzan/dao/rbtree"
)
func main() {
var tree = rbtree.New[int, struct{}]()
for i := 0; i < 10; i++ {
tree.Set(i, struct{}{})
}
var results = tree.
NewQuery().
Left(func(key int) bool { return key >= 3 }).
Right(func(key int) bool { return key <= 5 }).
Limit(10).
Order(dao.DESC).
Do()
for _, item := range results {
println(item.Key)
}
}
10,000 elements
BenchmarkRBTree_Set-12 540 219 ns/op 720051 B/op 20001 allocs/op
BenchmarkRBTree_Get-12 3272 36 ns/op 0 B/op 0 allocs/op
BenchmarkRBTree_Query-12 60 1809 ns/op 3680048 B/op 60000 allocs/op
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.