Какую информацию собирает GCC Profile Guided Optimization (PGO) и какие оптимизации используют ее?

Какую информацию GCC собирает, когда я включаю -fprofile-generate и какая оптимизация на самом деле использует собранную информацию (при настройке -fprofile-use флаг)?

Мне нужны цитаты здесь. Я искал некоторое время, но не нашел ничего задокументированного.

Информация об оптимизации времени соединения (LTO) будет плюсом! = D

37

Решение

-fprofile-generate позволяет -fprofile-arcs, -fprofile-values а также -fvpt,

-fprofile-use позволяет -fbranch-probabilities, -fvpt, -funroll-loops, -fpeel-loops а также -ftracer

Источник: http://gcc.gnu.org/onlinedocs/gcc-4.7.2/gcc/Optimize-Options.html#Optimize-Options

PS. Информация о LTO также на этой странице.

35

Другие решения

«Что каждый программист должен знать о памяти» Ульриха Дреппера
https://people.freebsd.org/~lstewart/articles/cpumemory.pdf
http://www.akkadia.org/drepper/cpumemory.pdf

В разделе 7.4

  • Компиляция с —profile-generate генерирует файл .gcno для каждого объектного файла. (тот же файл, который используется для отчетов о покрытии gcov)
  • затем вы должны выполнить несколько тестов, во время выполнения он записывает данные покрытия в файлы .gcda
  • перекомпилировать с —profile-use: он соберет данные покрытия и определит, вероятна ли ветвь (__builtin_expect (.., 1) или маловероятна (__builtin_expect (.., 0))

Результат должен работать быстрее, так как он должен быть лучше при предварительной загрузке кода в кэш инструкций процессора.

9

По вопросам рекламы [email protected]