引言
在几乎所有的程序设计基础课程中,老师都会强调,数组按行访问的速度要快于按列访问的速度。本文将通过实验验证该结论的正确性,并且解释其背后的原理。
正确性的检验
实验平台
OS: Ubuntu 18.04.4
Architecture: x86-64
CPU: Intel® Xeon® Platinum 8269CY CPU @ 2.50GHz
L1d cache: 32K
L1i cache: 32K
L2 cache: 1024K
L3 cache: 36608K
Memory: 3GB
程序思路
分别通过按行和按列的方式遍历读取二维数组的元素,记录访问的时间,并多次实验取平均值。
源代码
#include<bits/stdc++.h>
using namespace std;
const int M = 20000;
const int N = 20000;
static int x[M][N];
int sumarrayrows(int a[M][N]){
int i, j, sum = 0;
for (i = 0; i < M; i++