che*_*ish 0 c c++ arrays algorithm performance
我正在使用长int数据,我试图确定数组中的最小元素.我知道循环遍历数组的传统方法来找到最小值.这个问题是检查是否有其他方法可以加快速度.
这个数组的某些属性可能可以帮助我们加快速度,但我不确定如何.
该数组恰好有8个长整数.每当我们调用该函数时,我们从数组中找到一个min,并且数字被另一个数字替换,我们重复这一步.(至少80亿次)
我想要记住下一次迭代的第二大数字(因为我们将在当前迭代中对它们进行比较).与通过数组的线性实现相比,这是否有用?
也允许排序,但我们必须以某种方式记住使用临时数组的原始位置.这会更有效吗?
还能以某种方式使用SIMD来确定长期最小值吗?即使是毫秒级的加速也很有用,因为我正在进行数十亿次此操作.
具有8个元素阵列的算法的理论复杂性几乎无关紧要.鉴于缓存局部性和所有选项,线性搜索很可能是您的最佳选择.
另一种选择是按降序对数组进行一次排序,然后每次只更换第一个元素,最后在右侧移动新数字.
在任何情况下,尝试和配置文件.