无分支二分搜索

问题描述 投票:0回答:2

我很好奇是否有人可以向我解释无分支二分搜索的实现。我在最近的一个“问题”中看到了它,但我无法想象它将如何实现。我认为如果项目数量很大,避免分支可能会很有用。

algorithm binary-search branchless
2个回答
7
投票
static const

数组,并对其执行快速无分支二分搜索。”在

这个答案
中找到。 “无分支”二分搜索基本上只是一个展开的二分搜索循环。仅当您事先知道要搜索的数组中的项目数时,这才有效(就像它是

static const

一样)。如果手动完成的代码太长,您可以编写一个程序来编写展开的代码。


然后,您必须对您的解决方案进行

基准测试,看看它是否真的比循环更快。如果您的无分支代码太大,它将无法容纳在 CPU 的快速指令缓存中,并且运行时间将比等效循环更长。

如果有一个函数根据正确项与当前项的位置返回+1、-1或0,则可以将位置初始化为列表大小/2,将步长初始化为位置/2,然后在每个比较位置+=方向*步长;步长=步长/2。迭代直到步长为零。

2
投票

© www.soinside.com 2019 - 2024. All rights reserved.