下面两段程序片,其执行效率有区别码?在实际代码中会选用哪一段,为什么?

其实就是在执行两层for循环的循环体中,for循环调换位置是否对效率有影响?
如下:
代码段一:
for(row=5;--row>=0;)
for(col=100;--col>=0;)
sum=sum+a[row][col];
代码段二:
for(col=100;--col>=0;)
for(row=5;--row>=0;)
sum=sum+a[row][col];

本人小白,望大神们指教。

看起来都差不多,感觉没区别的样子。

一的局部性好于二。一行中的元素是顺序存储的。但是,估计对效率的影响可以忽略。都在内存中访问很快。

第一种可能更好,但是你的数据那么少,影响不大

第一种是按内存顺序访问的,应该会快点,这个数据量不大,没什么影响。如果数据量大的时候我认为第一种效率更高点

现代的处理器有L1 L2 L3等高速缓存,a[row][col]在内存中的排列是,相同row的第二维数组排列在一起。所以代码段1命中缓存的概率更高,效率要好。
但是这取决于你的数组的大小,以及具体的处理器。

第一种是按内存顺序访问的,应该会快点

显然是代码一
符合计算机存储思维,按行来。

看着差不多,数据少的话应该都一样吧