对小的未排序数组进行代价最低的相等搜索 在C++中,对于一个与你所搜索的元素相等的元素,在执行时间上,搜索一个大约4到16个元素的小数组是最有效的方法?在本例中,正在搜索的元素是指针,因此它相对较小
(我的目的是防止点云中的点使用已共享边的点创建边。每个点的边阵列都很小,但可能有大量的点。此外,我也很好奇!)您最好的选择是使用各种机制分析您的特定应用程序,并查看哪一种性能最好对小的未排序数组进行代价最低的相等搜索 在C++中,对于一个与你所搜索的元素相等的元素,在执行时间上,搜索一个大约4到16个元素的小数组是最有效的方法?在本例中,正在搜索的元素是指针,因此它相对较小,c++,arrays,search,micro-optimization,C++,Arrays,Search,Micro Optimization,(我的目的是防止点云中的点使用已共享边的点创建边。每个点的边阵列都很小,但可能有大量的点。此外,我也很好奇!)您最好的选择是使用各种机制分析您的特定应用程序,并查看哪一种性能最好 我怀疑,鉴于它是未排序的,直线搜索将最适合您。如果您能够对数组进行一次预排序,并且它很少更新或从不更新,则可以进行预排序,然后使用二进制搜索。您最好的选择是使用各种机制分析您的特定应用程序,并查看哪种性能最佳 我怀疑,鉴于它是未排序的,直线搜索将最适合您。如果您能够对数组进行一次预排序,但它很少更新或从不更新,则可以进
我怀疑,鉴于它是未排序的,直线搜索将最适合您。如果您能够对数组进行一次预排序,并且它很少更新或从不更新,则可以进行预排序,然后使用二进制搜索。您最好的选择是使用各种机制分析您的特定应用程序,并查看哪种性能最佳
我怀疑,鉴于它是未排序的,直线搜索将最适合您。如果您能够对数组进行一次预排序,但它很少更新或从不更新,则可以进行预排序,然后使用二进制搜索。尝试线性搜索;尝试从一个或多个二进制切分阶段开始。前者平均涉及更多的比较;后者具有更大的缓存未命中和分支预测失误的范围,并且要求对数组进行预排序
只有通过测量,你才能知道哪一个更快,然后只有在你测量的平台上。尝试线性搜索;尝试从一个或多个二进制切分阶段开始。前者平均涉及更多的比较;后者具有更大的缓存未命中和分支预测失误的范围,并且要求对数组进行预排序
只有通过测量,您才能判断哪个更快,然后只能在您测量的平台上进行。如果您必须多次执行此搜索,并且数组不经常/根本不改变,请对其进行排序,然后使用二进制搜索。如果您必须多次执行此搜索,并且数组不经常/根本不改变,排序,然后使用二进制搜索。使用循环和线性搜索。给定大小,编译器可能会对其执行循环展开优化。使用带有线性搜索的循环。给定大小,编译器可能会对其执行循环展开优化。