Подбор ключей компиляции основан на измерениях характеристик во время
выполнения программы. На первом этапе создаётся исполняемый файл
program
, в который включается информация для профилировки. Ключ
-fprofile-generate=data/pgo
указывает, что нужно собирать информацию и
сохранять в каталог data/pgo
. Компиляцию следует выполнять в
последовательном режиме.
env CXXFLAGS='-fprofile-generate=data/pgo' cmake .. -DCMAKE_BUILD_TYPE=Release -G "Unix Makefiles"
make -j1
После компиляцию программу следует выполнить, придерживаясь типичного сценария использования.
./program
Скомпилировать программу с использованием полученной статистики. Для
многопоточной программы следует указать флаг -fprofile-correction
,
чтобы скорректировать данные, которые могут неустойчивыми из-за
пропусков обновлений счётчиков. Компиляцию следует выполнять в
последовательном режиме.
env CXXFLAGS='-fprofile-use=data/pgo -fprofile-correction' cmake .. -DCMAKE_BUILD_TYPE=Release -G "Unix Makefiles"
make -j1