int sumarrayrows(int a[M][N])
{
int i, j, sum = 0;
for (i = 0; i < M; i++)
for (j = 0; j < N; j++)
sum += a[i][j];
return sum;
}
我想知道如何找到任何缓存友好代码的未命中率,并测量缓存或缓存 block 的大小(如果是的话)如何找到它的大小。
更新我想出了如何找到错过率
因为这使用了 4 个字节 会有 25% 的机会出现失误 a[0] = M a[1] = H a[2] = H a[3] = H
最佳答案
取决于您的平台。大多数现代 CPU 都有硬件性能计数器,可用于计算缓存未命中次数,但访问这些计数器可能会很困难。例如,Windows 通常希望您编写内核模式驱动程序。
您最好获得一些不错的性能分析软件并通过它运行您的代码。
关于c - 如何找到缓存友好代码中的未命中率?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13691334/