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
|
||
----
|