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