你好,请问二分查找时,这里为什么先从低32位开始查?有特殊考虑吗?
https://github.com/openacid/low/blob/61370655ca7432adb5a8f077deeef8b1ba288974/bitmap/select.go#L264
问了下gpt,说是"现代CPU对"从低位开始"的分支预测更友好",但是不确定是不是正确,想请教下作者本人。
Line 264 in 6137065
ones := bits.OnesCount32(uint32(ww)) 问了下gpt,说是"现代CPU对"从低位开始"的分支预测更友好",但是不确定是不是正确,想请教下作者本人。
不是的, 是因为1是从第0个bit向第63个bit顺序填的, 所以要按顺序找...
low/bitmap/select.go Line 264 in 6137065 ones := bits.OnesCount32(uint32(ww)) 问了下gpt,说是"现代CPU对"从低位开始"的分支预测更友好",但是不确定是不是正确,想请教下作者本人。
不是的, 是因为1是从第0个bit向第63个bit顺序填的, 所以要按顺序找...
感谢xp回复。 问了这个问题之后重新看了下实现,确实是从低位向高位填充的。 后来我的问题是这样,即设置bit的时候,从高位向低位,也是可以的吧,对应的查找方式改改就行?
可以, 就是实现有点麻烦 :(
可以, 就是实现有点麻烦 :(
好的,谢谢xp。