счетчики cachegrind не отражают реальную производительность

Две версии одного и того же алгоритма дают разное общее количество выборок команд и оценки циклов при использовании valgrind/cachegrind. Разница составляет около 25%. Однако время процесса очень похоже (на самом деле оно короче для версии cachegrind-slow):

  • версия 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 медленнее?


person Arek' Fu    schedule 13.10.2012    source источник
comment
Вы измеряете время запуска cachegrind или реального (вы понимаете, что я имею в виду) запуска?   -  person    schedule 13.10.2012
comment
@delnan, я измеряю реальное время выполнения, используя встроенную функцию time bash.   -  person Arek' Fu    schedule 13.10.2012


Ответы (1)


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

person Arek' Fu    schedule 18.10.2012