Как использовать getrusage для чтения ошибок страницы в C?

Я пытаюсь получить ошибки страницы, когда я запускаю программу из двух разных частей.

Я делаю некоторые операции, используя два метода матричного умножения, и пытаюсь выяснить, какой из них вызывает больше сбоев страниц.

/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, кажется, не работает ни один. Есть ли какая-нибудь команда, чтобы начать считать ошибки для каждого метода умножения? Я не прав с кодом?

Спасибо за ответы

1 ответ

Вполне возможно, что количество ошибок на странице равно нулю. Это в большей степени связано с тем, как вы загружаете данные, какими общими библиотеками вы пользуетесь (и находятся ли они в памяти или нет), использованием копирования при записи и т. П., Чем это происходит с вашими алгоритмами.,

Вы уверены, что не ищете количество пропущенных кешей процессора? Для матричного умножения больших матриц наивный алгоритм может иметь гораздо худшее использование кэша, чем оптимальный. Попробуйте использовать valgrind с cachegrind инструмент.

Другие вопросы по тегам