缓存机制(内存和缓存的区别)
缓存机制
在电脑中有一种比内存读入还要快的东西叫做缓存,其定义是对于从内存里读入一个数组时,计算机会预测剩余的连续的部分数组是否会被用到,所以将他存进缓存,这样可以直接按顺序读入,不用查询,更加快。
那么对于我们的二维数组 \(f[i][j]\) 他是以长度为 \(1\times j\) 的 \(i\) 个线段组成一个线性的长链,所以连续的数字之间是 \(f[1][1],f[1][2]\), 而并不是 \(f[1][1],f[2][1]\),
那么推广到我们的 \(for\) 循环上,若我们按照外层 \(i\),内层 \(j\) 的顺序循环,得到的数组就是按照计算机存储顺序调用,因此可以直接从缓存里读入 ,但是当我们反过来,计算机无法预测我们的顺序,即缓存中的数组是无用的(当前),那么只能调用内存,时间的差距大约在 \(10\)左右
所以说对于循环的枚举顺序关系到时间复杂度是很重要的.尤其是矩阵乘除,不同的运输顺序造成的极值可达 \(4\) 倍,这就是后几个点被卡的原因,特别亏。