3
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;
}

我想知道如何找到任何缓存友好代码的未命中率,并测量缓存或缓存块的大小,如果是的话,如何找到它的大小。

更新我想出了如何找到未命中率

由于这使用了 4 个字节,因此有 25% 的机会发生未命中率 a[0] = M a[1] = H a[2] = H a[3] = H

4

1 回答 1

0

取决于你的平台。大多数现代 CPU 都有硬件性能计数器,可能用于计算缓存未命中数,但访问这些计数器可能会很尴尬。例如,Windows 通常希望您编写内核模式驱动程序。

您最好获得一些不错的性能分析软件并通过它运行您的代码。

于 2012-12-03T21:08:37.807 回答