Показатели 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 (чтобы я мог получать значимые значения для каждой функции).

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