我一直在思考并想知道最快的算法是什么来遍历一个(大 - 可以说超过 10,000 大小)未排序的 int 数组的每个元素。我的第一个想法是通过线性运动并一次检查每个元素 - 然后我的思绪转向递归并想知道是否每次都将数组切割成平行线并检查元素会没问题。
我想弄清楚的目标是一个数字(在这种数组中)是否是一个看似“随机”生成的整数的倍数。然后在这之后我将继续尝试找出大数组的一个子集是否也等于这个数字的倍数。 (但我改天再讲!)
你有什么想法?问题?评论?顾虑?
最佳答案
您似乎误以为按顺序运行数组的瓶颈是 CPU:它不是,它是您的内存总线。现代平台非常擅长预测顺序访问并尽一切努力简化访问,您不能做更多。并行化通常无济于事,因为您只有一个内存总线,这是瓶颈,相反,您冒着错误共享的风险,因此情况甚至可能变得更糟。
如果出于某种原因您确实对数组的每个元素进行了大量计算,情况就会发生变化。然后,您可以开始尝试一些并行的东西。
关于c - 通过数组的最有效方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23966527/