最佳答案
对于非常大的数组上的随机访问是否有任何可能的优化(我目前使用的是 uint8_t
,我正在询问哪种方法更好)
uint8_t MyArray[10000000];
当数组中任何位置的值为
那么,还有什么比使用 uint8_t
数组更好的方法吗?它应该尽可能快地以随机顺序遍历整个数组,这对 RAM 带宽是非常沉重的,所以当有多个线程同时为不同的数组做这件事时,目前整个 RAM 带宽很快就饱和了。
我这么问是因为使用这么大的数组(10MB)感觉效率很低,而实际上我们知道除了5% 之外,几乎所有的值都是0或1。因此,当数组中95% 的值实际上只需要1位而不是8位时,这将减少几乎一个数量级的内存使用。 感觉好像必须有一个更有效的内存解决方案,这将大大减少内存带宽的需要,因此也是显着更快的随机访问。