对于小型未排序数组进行最低成本的等式搜索

时间:2013-09-17 16:48:43

标签: c++ arrays search micro-optimization

在执行时,如何在C ++中搜索大约4到16个元素的小数组,对于一个与你要搜索的元素相同的元素,最有效的方法是什么?在这种情况下,被搜索的元素是一个指针,所以它相对较小。

(我的目的是防止点云中的点创建具有已经与它们共享边缘的点的边缘。边缘阵列对于每个点都很小,但是可能存在大量的点。此外,我我也很好奇!)

3 个答案:

答案 0 :(得分:2)

您最好的选择是使用各种机制对您的特定应用进行分析,并了解哪种方法效果最佳。

我怀疑,鉴于它没有排序,直线搜索最适合你。如果您能够对数组进行一次预排序并且不经常更新或从不更新,则可以预先排序然后使用二进制搜索。

答案 1 :(得分:1)

尝试线性搜索;尝试从一个或多个二进制切割阶段开始。前者涉及平均比较;后者有更多的缓存未命中和分支错误预测的范围,并要求对数组进行预排序。

只有通过测量才能知道哪个更快,然后才能确定您测量的平台。

答案 2 :(得分:1)

如果您不得不多次执行此搜索,并且数组不会经常更改/根据它进行排序,然后使用二进制搜索。