数组和缓存

Arrays and Caching

本文关键字:缓存 数组      更新时间:2023-10-16

如果我有一个长度为80亿的char数组。将其拆分为更小的阵列会通过改进缓存来提高性能吗?基本上,我会迭代数组并进行一些比较。如果没有,使用这样长度的数组的最佳方式是什么。

我正在将二进制形式的文件读取到数组中,并将对文件的不同部分进行二进制比较。

8 GB的数据将不可避免地破坏数据的局部性,因此无论如何,您要么必须将内存管理得更小,要么您的操作系统将进行虚拟内存的磁盘交换。

然而,还有一种替代方案,即所谓的mmap。从本质上讲,这允许您将文件映射到虚拟内存空间,然后您的操作系统负责访问文件并将必要的页面加载到RAM中,而您对该文件的访问只不过是一个简单的内存寻址。

有关mmap的更多信息,请访问http://en.wikipedia.org/wiki/Mmap

如果你要做一次,那么就直接执行它。编程工作可能不值得花费时间。

我假设你想一次又一次地这样做,这就是为什么你想优化它。知道你的迭代和比较是否需要按顺序进行肯定会有帮助,等等?如果没有一些问题域输入,在这里很难给出一般的优化。

如果它可以并行完成,并且您必须多次执行,我建议您查看MapReduce技术来解决此问题。