c - 如何使用 getrusage 读取 C 中的页面错误?

标签 c getrusage

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

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

/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,我认为不正确。如果我使用两个不同的变量usage和usage2,似乎两者都不起作用。 有没有命令开始计算每种乘法的错误? 我的代码有错吗?

谢谢各位的解答

最佳答案

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

您确定不是在寻找处理器缓存未命中的数量吗?对于大矩阵的矩阵乘法,简单算法的缓存使用率可能比最佳算法差得多。尝试将 valgrindcachegrind 工具结合使用。

关于c - 如何使用 getrusage 读取 C 中的页面错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1907402/

相关文章:

c++ - getrusage() 获取系统时间、用户时间。 Unix编程帮助

c - 连续两次调用 getrusage 是否保证产生越来越多的结果?

c - Windows 7 中 C 的 API 和编译器,主要关注的是

c - automake --add-missing : error: no proper invocation of AM_INIT_AUTOMAKE was found

c - 如何在 C 中一起使用 libevent 和 pthread

linux - 为什么使用 getrusage() 测量的已用用户时间不接近完全一致?

timer - UNIX 编程。 struct timeval 如何打印它(C 编程)

c - OpenCV 将坐标传递给 OpenGL 但 OpenGL 无法绘制它

c - 在 for 循环中使用 printf( )

c++ - getrusage对我不起作用吗?为什么?