Показатели cachegrind не отражают реальную производительность
Две версии одного и того же алгоритма дают разные суммарные значения выборки команд и оценки цикла в valgrind/cachegrind. Разница составляет около 25%. Однако время процесса очень похоже (на самом деле оно короче для версии с замедленным кэшированием):
версия 1:
Ir: 146,328,018,245 CEst: 152,553,736,055 timing: 17.93 s
версия 2:
Ir: 185,221,836,610 CEst: 197,531,381,950 timing: 17.53 s
Ожидается ли такое поведение? Как я могу узнать больше о том, почему версия 1 медленнее?
1 ответ
Решение
Я обнаружил, что несоответствие происходит из-за различных опций компилятора, используемых для запуска cachegrind и для запуска синхронизации. В частности, я отключил встраивание функций для запусков cachegrind (чтобы я мог получать значимые значения для каждой функции).