当我运行一个包含两个不同部分的程序时,我试图得到页面错误。
我所做的是使用两种矩阵乘法进行一些操作,并尝试找出哪种方法导致更多的页面错误。
/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,似乎都不起作用。是否有命令开始计数每种乘法方法的错误?我的代码错了吗?
谢谢你的回答
发布于 2009-12-16 05:59:04
页面错误的数量完全有可能为零。它更多地与加载数据的方式、正在使用的共享库(以及它们是否已经在内存中)、写入时复制使用以及与算法类似。
您确定您不是在寻找处理器缓存未命中的数量吗?对于大型矩阵的矩阵乘法,朴素算法的缓存使用率可能比最佳算法差得多。尝试在cachegrind工具中使用valgrind。
https://stackoverflow.com/questions/1907402
复制相似问题