Jump to content

Оптимизация на основе профиля

Оптимизация на основе профиля ( PGO , иногда произносится как pogo) . [1] ), также известный как обратная связь по профилю ( PDF ), [2] и оптимизация с обратной связью ( FDO ) [3] — это метод оптимизации компилятора в компьютерном программировании , который использует профилирование для повышения производительности выполнения программы .

Методы оптимизации, основанные на статическом анализе исходного кода программы, предусматривают повышение производительности кода без фактического выполнения программы. не Динамический анализ программы выполняется. Анализ может даже учитывать код внутри циклов, включая количество раз, когда цикл будет выполняться, например, при развертывании цикла . При отсутствии всей информации о времени выполнения статический анализ программы не может принять во внимание, как часто фактически выполняется этот участок кода.

Первый компилятор высокого уровня, представленный в 1957 году как Система автоматического кодирования Фортрана, разбил код на блоки и разработал таблицу частоты выполнения каждого блока посредством симуляции выполнения кода методом Монте-Карло , в котором результат условные переводы (как через IFоператоры -type) определяется генератором случайных чисел, соответствующим образом взвешенным по любому FREQUENCY утверждения были предоставлены программистом. [4]

Вместо информации о частоте, предоставленной программистом, оптимизация на основе профиля использует результаты профилирования тестовых запусков инструментированной программы для оптимизации окончательно сгенерированного кода . [5] [6] [7] Компилятор получает доступ к данным профиля из примера запуска программы через репрезентативный входной набор. Результаты показывают, какие области программы выполняются чаще, а какие реже. Все оптимизации выигрывают от обратной связи на основе профилей, поскольку они меньше зависят от эвристики при принятии решений о компиляции. Однако есть оговорка: выборка данных, подаваемая в программу на этапе профилирования, должна быть статистически репрезентативной для типичных сценариев использования; в противном случае обратная связь на основе профиля может навредить общей производительности финальной сборки вместо того, чтобы улучшить ее.

Компиляция «точно в срок» может использовать информацию времени выполнения для динамической перекомпиляции частей исполняемого кода для создания более эффективного машинного кода. Если динамический профиль изменяется во время выполнения, он может деоптимизировать предыдущий собственный код и сгенерировать новый код, оптимизированный с использованием информации из нового профиля.

Принятие

[ редактировать ]

Существует поддержка сборки Firefox с использованием PGO. [8] Несмотря на то, что PGO эффективен, он не получил широкого распространения в программных проектах из-за утомительной модели двойной компиляции. [9] Также возможно выполнить PGO без инструментирования, собрав профиль с помощью аппаратных счетчиков производительности . [9] Этот подход, основанный на выборке, требует гораздо меньших затрат и не требует специальной компиляции.

HotSpot ( JVM Виртуальная машина Java ) использует оптимизацию на основе профилей для динамического создания машинного кода. Как следствие, двоичный файл программного обеспечения оптимизируется для фактической нагрузки, которую он получает. Если нагрузка изменится, адаптивная оптимизация может динамически перекомпилировать работающее программное обеспечение, чтобы оптимизировать его для новой нагрузки. Это означает, что все программное обеспечение, выполняемое на HotSpot JVM, эффективно использует оптимизацию на основе профилей. [10]

PGO был принят в для Microsoft Windows версии Google Chrome . PGO был включен в 64-битной версии Chrome, начиная с версии 53 и версии 54 для 32-битной версии. [11]

Google опубликовал статью [12] описание инструмента используемого для использования производственных профилей для управления сборками, что приводит к повышению производительности до 10%.

Реализации

[ редактировать ]

Примеры компиляторов, реализующих PGO:

См. также

[ редактировать ]
  1. ^ Перейти обратно: а б «Блог группы Microsoft Visual C++» . 12 ноября 2008 г.
  2. ^ «Обратная связь по профилю (PDF)» . XL C/C++ для AIX . Проверено 23 ноября 2013 г.
  3. ^ Батист Вихт; Роберто А. Витилло; Дехао Чен; Дэвид Левинталь (24 ноября 2014 г.). «Аппаратная оптимизация с учетом профиля». arXiv : 1411.6361 . Бибкод : 2014arXiv1411.6361W . {{cite journal}}: Для цитирования журнала требуется |journal= ( помощь )
  4. ^ Дж. В. Бэкус, Р. Дж. Бибер и др., Система автоматического кодирования на Фортране , Труды Западной объединенной компьютерной конференции, февраль 1957 г., стр. 10. 195
  5. ^ «К. Петтис, Р. Хансен, Позиционирование кода на основе профиля , Конференция по разработке и реализации языков программирования ACM SIGPLAN, 1990 г.» (PDF) .
  6. ^ Перейти обратно: а б «Компилятор Intel Fortran 10.1, профессиональная и стандартная версии для Mac OS X» . Архивировано из оригинала 28 сентября 2013 года.
  7. ^ «Краткий справочник по профильной оптимизации (PGO)» .
  8. Создание с помощью оптимизации на основе профиля , mozilla.org, 13 августа 2013 г.
  9. ^ Перейти обратно: а б Дехао Чен (2010), « Укрощение образцов аппаратных событий для компиляции fdo », Труды 8-го ежегодного международного симпозиума IEEE/ACM по генерации и оптимизации кода , стр. 42–52.
  10. ^ Иванов Владимир (25 июля 2013 г.). «Обзор JIT-компиляции JVM» . Проверено 10 сентября 2016 г.
  11. ^ Маршан, Себастьян (31 октября 2016 г.). «Ускорение работы Chrome в Windows с помощью PGO» . Архивировано из оригинала 1 ноября 2016 года . Проверено 1 ноября 2016 г.
  12. ^ Чен, Дехао; Ли, Дэвид Синьлян; Мозли, Типп (2016). «AutoFDO: автоматическая оптимизация с учетом обратной связи для приложений складского масштаба». Материалы Международного симпозиума по генерации и оптимизации кода 2016 года . Нью-Йорк, штат Нью-Йорк, США. стр. 12–23. дои : 10.1145/2854038.2854044 . ISBN  978-1-4503-3778-6 . S2CID   17473127 . {{cite book}}: CS1 maint: отсутствует местоположение издателя ( ссылка )
  13. ^ «Оптимизация на основе профиля[VS 2019]» . 18 октября 2022 г.
  14. ^ «Оптимизация на основе профиля [Руководство пользователя компилятора Clang]» .
  15. ^ Кинтеро, Дино; Шаброль, Себастьян; Чен, Чи Хуэй; Дхандапани, Мурали; Холлоуэй, Талор; Джадхав, Чандракант; Ким, Сае Ки; Куриан, Сиджо; Радж, Бхарат; Ресенде, Ронан; Роден, Бьёрн; Шринивасан, Ниранджан; Уэйл, Ричард; Занатта, Уильям; Чжан, Чжи; Redbooks, IBM (1 мая 2013 г.). Руководство по производительности IBM Power Systems: внедрение и оптимизация . Красные книги IBM. ISBN  978-0-7384-3766-8 – через Google Книги.
  16. ^ «Оптимизация собственного исполняемого файла с помощью оптимизации на основе профиля [Руководства по GraalVM]» .
  17. ^ «Что нового в .NET 6: оптимизация на основе профилей» . 26 мая 2023 г.
  18. ^ «Оптимизация по профилям» .
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: 13b8c0313953c43f19f3ceaf390db176__1719412920
URL1:https://arc.ask3.ru/arc/aa/13/76/13b8c0313953c43f19f3ceaf390db176.html
Заголовок, (Title) документа по адресу, URL1:
Profile-guided optimization - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)