在facebook组中,我看到了一个类似的问题:
如果一行在下面的二维数组中占主导地位,哪一个是有利的,为什么呢?
a) for(i=0;i<1000;i++)
for(j=0;j<1000;j++)
temp=temp+a[i][j];
b) for(j=0;j<1000;j++)
for(i=0;i<1000;i++)
temp=temp+a[i][j]
Run Code Online (Sandbox Code Playgroud)
从我的观点来看,我可以看出上述两个陈述没有区别.我猜这些都是一样的.
如果我错了,请纠正我?
理论上没有区别.
实际的优点是缓存局部性.如果访问距离较远的位置,则会增加缓存未命中数,从而导致代码运行速度变慢.
根据您的处理器高速缓存大小,您可能需要用一些相当大的数字替换1000以便感知效果.
| 归档时间: |
|
| 查看次数: |
811 次 |
| 最近记录: |