Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/163.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
对小的未排序数组进行代价最低的相等搜索 在C++中,对于一个与你所搜索的元素相等的元素,在执行时间上,搜索一个大约4到16个元素的小数组是最有效的方法?在本例中,正在搜索的元素是指针,因此它相对较小_C++_Arrays_Search_Micro Optimization - Fatal编程技术网

对小的未排序数组进行代价最低的相等搜索 在C++中,对于一个与你所搜索的元素相等的元素,在执行时间上,搜索一个大约4到16个元素的小数组是最有效的方法?在本例中,正在搜索的元素是指针,因此它相对较小

对小的未排序数组进行代价最低的相等搜索 在C++中,对于一个与你所搜索的元素相等的元素,在执行时间上,搜索一个大约4到16个元素的小数组是最有效的方法?在本例中,正在搜索的元素是指针,因此它相对较小,c++,arrays,search,micro-optimization,C++,Arrays,Search,Micro Optimization,(我的目的是防止点云中的点使用已共享边的点创建边。每个点的边阵列都很小,但可能有大量的点。此外,我也很好奇!)您最好的选择是使用各种机制分析您的特定应用程序,并查看哪一种性能最好 我怀疑,鉴于它是未排序的,直线搜索将最适合您。如果您能够对数组进行一次预排序,并且它很少更新或从不更新,则可以进行预排序,然后使用二进制搜索。您最好的选择是使用各种机制分析您的特定应用程序,并查看哪种性能最佳 我怀疑,鉴于它是未排序的,直线搜索将最适合您。如果您能够对数组进行一次预排序,但它很少更新或从不更新,则可以进

(我的目的是防止点云中的点使用已共享边的点创建边。每个点的边阵列都很小,但可能有大量的点。此外,我也很好奇!)

您最好的选择是使用各种机制分析您的特定应用程序,并查看哪一种性能最好


我怀疑,鉴于它是未排序的,直线搜索将最适合您。如果您能够对数组进行一次预排序,并且它很少更新或从不更新,则可以进行预排序,然后使用二进制搜索。

您最好的选择是使用各种机制分析您的特定应用程序,并查看哪种性能最佳


我怀疑,鉴于它是未排序的,直线搜索将最适合您。如果您能够对数组进行一次预排序,但它很少更新或从不更新,则可以进行预排序,然后使用二进制搜索。

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


只有通过测量,你才能知道哪一个更快,然后只有在你测量的平台上。

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


只有通过测量,您才能判断哪个更快,然后只能在您测量的平台上进行。

如果您必须多次执行此搜索,并且数组不经常/根本不改变,请对其进行排序,然后使用二进制搜索。

如果您必须多次执行此搜索,并且数组不经常/根本不改变,排序,然后使用二进制搜索。

使用循环和线性搜索。给定大小,编译器可能会对其执行循环展开优化。使用带有线性搜索的循环。给定大小,编译器可能会对其执行循环展开优化。