无分支二进制搜索

GWW*_*GWW 9 algorithm

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

Gre*_*ill 6

我假设您正在谈论句子" static const在您想要支持的域中创建所有完美正方形的数组,并对其执行快速无分支二进制搜索." 发现在这个答案.

"无分支"二进制搜索基本上只是一个展开的二进制搜索循环.这只有在你事先知道你正在搜索的数组中的项目数量时才有效(如果你想的那样static const).如果手动执行的时间太长,您可以编写一个程序来编写展开的代码.

然后,您必须您的解决方案进行基准测试,以确定它是否真的比循环更快.如果您的无分支代码太大,它将不适合CPU的快速指令高速缓存,并且运行时间比等效循环要长.

  • 这种“无分支的”展开搜索在Bentley的“ Programming Pearls”(IIRC)中得到了体现,他在其中详细介绍了该技术 (2认同)