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