【发布时间】:2012-08-05 18:34:12
【问题描述】:
假设在速度关键的代码中,我们有一对经常一起使用的数组,其中确切的大小并不重要,只需将其设置为合理的值,例如
int a[256], b[256];
这是否可能是一种悲观,因为低地址位相同会使缓存更难同时处理两个数组?最好指定例如300 而不是 256?
【问题讨论】:
-
您怀疑二次幂可能有问题是正确的。但它通常只适用于你有超过 2 步的情况。 (尤其是当您超过 L1 缓存关联性时)Here's an example of where it actually becomes problematic. 在该示例中,有 4 个数组 - 所有这些数组都与从 4k 页面开始的相同偏移量对齐。
标签: c performance caching optimization memory