0

当我运行具有两个不同部分的程序时,我试图获取页面错误。

我所做的是使用两种矩阵乘法方法进行一些操作,并尝试找出导致更多页面错误的方法。

/Operations for method 1

getrusage (RUSAGE_SELF, &usage);
fault1=usage.ru_minflt;

/operations for Method 2


getrusage (RUSAGE_SELF, &usage);
fault2=usage.ru_minflt-fault1;

但似乎fault2 = 0,我认为不正确。如果我使用两个不同的变量用法和用法2,似乎也不起作用。是否有任何命令可以开始计算每种乘法方法的故障?我的代码错了吗?

感谢您的回答

4

1 回答 1

0

页面错误的数量完全有可能为零。它与您加载数据的方式、您正在使用的共享库(以及它们是否已经在内存中)、写时复制的使用以及与您的算法类似的方式有更多的关系.

你确定你不是在寻找处理器缓存未命中的数量吗?对于大型矩阵的矩阵乘法,朴素算法的缓存使用率可能比最优算法差得多。尝试使用valgrindcachegrind工具。

于 2009-12-15T21:59:03.867 回答