low icon indicating copy to clipboard operation
low copied to clipboard

你好,请问二分查找时,这里为什么先从低32位开始查?有特殊考虑吗?

Open byteroll opened this issue 10 months ago • 4 comments

https://github.com/openacid/low/blob/61370655ca7432adb5a8f077deeef8b1ba288974/bitmap/select.go#L264

问了下gpt,说是"现代CPU对"从低位开始"的分支预测更友好",但是不确定是不是正确,想请教下作者本人。

byteroll avatar Apr 01 '25 03:04 byteroll

low/bitmap/select.go

Line 264 in 6137065

ones := bits.OnesCount32(uint32(ww)) 问了下gpt,说是"现代CPU对"从低位开始"的分支预测更友好",但是不确定是不是正确,想请教下作者本人。

不是的, 是因为1是从第0个bit向第63个bit顺序填的, 所以要按顺序找...

drmingdrmer avatar Jul 11 '25 17:07 drmingdrmer

low/bitmap/select.go Line 264 in 6137065 ones := bits.OnesCount32(uint32(ww)) 问了下gpt,说是"现代CPU对"从低位开始"的分支预测更友好",但是不确定是不是正确,想请教下作者本人。

不是的, 是因为1是从第0个bit向第63个bit顺序填的, 所以要按顺序找...

感谢xp回复。 问了这个问题之后重新看了下实现,确实是从低位向高位填充的。 后来我的问题是这样,即设置bit的时候,从高位向低位,也是可以的吧,对应的查找方式改改就行?

byteroll avatar Jul 14 '25 02:07 byteroll

可以, 就是实现有点麻烦 :(

drmingdrmer avatar Jul 14 '25 02:07 drmingdrmer

可以, 就是实现有点麻烦 :(

好的,谢谢xp。

byteroll avatar Jul 14 '25 02:07 byteroll