我在Linux上运行的Fortran 77中编写了一个很大的软件,它使用多维数组来存储时间索引矩阵和几个不同的系列,但索引顺序是像C这样的行主要排序。但是,Fortran是按列排序的,当值按顺序索引时会有缓存未命中的惩罚。
作为一个例子,我有两个系列的100.000 10x10矩阵。我将它们存储为:
MATRIX(2, 100000, 10, 10)
但据我了解,如果要以线性方式访问这些值,那么Fortran的最佳声明将是
MATRIX(10, 10, 100000, 2)
现在重构所有代码以使用其他订购系统的影响会很大,但我想了解潜在的影响。
有没有什么方法可以轻松衡量错误订购系统的影响,估计改变它的潜在改进?
可能会自动测量与这些阵列相关的缓存未命中或缓存未命中。