2014-01-09 2 views
1

Мне интересно, можно ли заставить кеш-флеш в c с помощью linux x86. Я прочитал несколько ответов, отвечая, как это сделать в оболочке, или используя asm/cache.h (требуя, чтобы я написал модуль linux ...)Benchmarking C code - Flush Cache

Я использую библиотеку PAPI, которая позволяет мне очень близко подойти к точное количество тактовых циклов, которые требуется выполнить для данного блока кода. Однако, поскольку я хочу использовать некоторые чрезвычайно короткие функции, мне нужно многократно запускать функции для точной статистики (вызов функции синхронизации занимает больше времени, чем код в блоках, который требуется выполнить). Запустив код несколько раз, кеш ускоряет выполнение последовательных вызовов одного и того же блока кода, и я хотел бы предотвратить это!

+0

Почему вы пытаетесь измерить такие короткие функции? Возможно, я помогу разоблачить «большую картину», – RSFalcon7

ответ

0

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