rwa*_*ace 8 c memory optimization performance caching
假设在速度关键代码中我们有一对经常一起使用的数组,其中确切的大小无关紧要,只需将其设置为合理的,例如
int a[256], b[256];
Run Code Online (Sandbox Code Playgroud)
这可能是一种悲观,因为低地址位相同会使缓存更难同时处理两个数组吗?指定例如300而不是256会更好吗?
将我的评论转到答案:
怀疑二人权可能有问题是正确的.但它通常只适用于超过2步的情况.在超过L1 缓存关联性之前,它不会变得非常糟糕.但即使在此之前,您可能会遇到错误的别名问题.
以下是两个权力实际上成为问题的两个例子:
在第一个示例中,有4个数组 - 所有这些数组都与4k页面开头的相同偏移量对齐.
在第二个例子中,当尺寸是2的幂时,矩阵的逐列跳跃完全破坏了性能.
在任何情况下,请注意关键概念实际上是数组的对齐,而不是它们的大小.如果您发现自己遇到了减速,只需在阵列之间添加一些填充以打破对齐.
| 归档时间: |
|
| 查看次数: |
976 次 |
| 最近记录: |