37 lines
1.8 KiB
Plaintext
37 lines
1.8 KiB
Plaintext
|
= Подбор ключей компиляции GCC
|
|||
|
:category: Программирование
|
|||
|
:tags: программирование, C, C++, отладка, оптимизация,
|
|||
|
|
|||
|
Подбор ключей компиляции основан на измерениях характеристик во время
|
|||
|
выполнения программы. На первом этапе создаётся исполняемый файл
|
|||
|
`program`, в который включается информация для профилировки. Ключ
|
|||
|
`-fprofile-generate=data/pgo` указывает, что нужно собирать информацию и
|
|||
|
сохранять в каталог `data/pgo`. Компиляцию следует выполнять в
|
|||
|
последовательном режиме.
|
|||
|
|
|||
|
[source,sh]
|
|||
|
----
|
|||
|
env CXXFLAGS='-fprofile-generate=data/pgo' cmake .. -DCMAKE_BUILD_TYPE=Release -G "Unix Makefiles"
|
|||
|
make -j1
|
|||
|
----
|
|||
|
|
|||
|
После компиляцию программу следует выполнить, придерживаясь типичного
|
|||
|
сценария использования.
|
|||
|
|
|||
|
[source,sh]
|
|||
|
----
|
|||
|
./program
|
|||
|
----
|
|||
|
|
|||
|
Скомпилировать программу с использованием полученной статистики. Для
|
|||
|
многопоточной программы следует указать флаг `-fprofile-correction`,
|
|||
|
чтобы скорректировать данные, которые могут неустойчивыми из-за
|
|||
|
пропусков обновлений счётчиков. Компиляцию следует выполнять в
|
|||
|
последовательном режиме.
|
|||
|
|
|||
|
[source,sh]
|
|||
|
----
|
|||
|
env CXXFLAGS='-fprofile-use=data/pgo -fprofile-correction' cmake .. -DCMAKE_BUILD_TYPE=Release -G "Unix Makefiles"
|
|||
|
make -j1
|
|||
|
----
|