Для установки нажмите кнопочку Установить расширение. И это всё.

Исходный код расширения WIKI 2 регулярно проверяется специалистами Mozilla Foundation, Google и Apple. Вы также можете это сделать в любой момент.

4,5
Келли Слэйтон
Мои поздравления с отличным проектом... что за великолепная идея!
Александр Григорьевский
Я использую WIKI 2 каждый день
и почти забыл как выглядит оригинальная Википедия.
Статистика
На русском, статей
Улучшено за 24 ч.
Добавлено за 24 ч.
Альтернативы
Недавние
Show all languages
Что мы делаем. Каждая страница проходит через несколько сотен совершенствующих техник. Совершенно та же Википедия. Только лучше.
.
Лео
Ньютон
Яркие
Мягкие

Из Википедии — свободной энциклопедии

Profile-guided optimization (PGO) — техника оптимизации программы компилятором, нацеленная на увеличение производительности выполнения программы. В отличие от традиционных способов оптимизации, анализирующих исключительно исходные коды, PGO использует результаты измерений тестовых запусков оптимизируемой программы для генерации более оптимального кода. Тестовые запуски выявляют, какие части программы исполняются чаще, а какие реже. Преимущество такого подхода в том, что компилятор не строит предположений при выборе способа оптимизации, а использует реальную статистику, собранную во время выполнения программы. Необходимо учитывать, что тестовые запуски программы должны выполняться по наиболее типичному сценарию, чтобы статистика была репрезентативной, иначе производительность программы может даже ухудшаться.

Энциклопедичный YouTube

  • 1/3
    Просмотров:
    3 288
    720
    372
  • C++ SSE Optimization - Lesson 2
  • Testing the Profiler API
  • SFBACCPPU 20150909 "C++11 Optimizations"

Субтитры

Методы оптимизации

Среди оптимизаций, которые могут использовать статистику, собранную при помощи PGO[1]:

  • Inlining — например, если функция A часто вызывает функцию B, и функция B достаточна мала, тогда функция B встраивается в A. Это делается на основе реальной статистики запусков программы.
  • Virtual Call Speculation  — если виртуальный вызов или вызов через функцию-указатель часто указывает на конкретную функцию, то он может быть заменён на условно-прямой (срабатывающий при выполнении условия) вызов конкретной функции, и функция может быть даже встроена (inline).
  • Register Allocation — оптимизация распределения регистров на основе собранных данных.
  • Basic Block Optimization — эта оптимизация позволяет поместить совместно вызываемые блоки кода в общую страницу памяти, что минимизирует количество используемых страниц и перерасход памяти.
  • Size/Speed Optimization  — функции, в которых программа тратит значительную часть времени, могут быть оптимизированы по скорости выполнения.
  • Function Layout  — на основании графа вызовов функции, принадлежащие одной цепочке исполнения, будут помещены в одну и ту же секцию.
  • Conditional Branch Optimization — оптимизация ветвлений и switch выражений. На основе тестовых запусков PGO помогает определить, какие условия в switch выражении выполняются чаще других. Эти значения затем могут быть вынесены из switch выражения. То же самое относится к if/else: компилятор может упорядочить ветви на основании данных о том, какая из них вызывается чаще.
  • Dead Code Separation  — код, который не вызывался во время тестовых запусков, может быть перемещён в специальную секцию, чтобы исключить его попадание в часто используемые страницы памяти.
  • EH Code Separation — код обработки исключения, выполняющийся в исключительных случаях, может быть перенесён в отдельную секцию, если возможно определить, что исключения срабатывают в конкретно определённых условиях.
  • Memory Intrinsics — функции для работы с памятью, такие как memset, memcpy и другие, могут быть встроены либо оптимизированы для наиболее частого размера блоков.

Реализации

Техники оптимизации PGO реализованы, в частности, компиляторами:

Примечания

  1. Profile-Guided Optimizations. Дата обращения: 15 февраля 2012. Архивировано 22 февраля 2012 года.
  2. Clang Compiler User’s Manual — Clang 3.9 documentation. clang.llvm.org. Дата обращения: 6 мая 2016. Архивировано 15 сентября 2011 года.
Эта страница в последний раз была отредактирована 12 декабря 2022 в 07:44.
Как только страница обновилась в Википедии она обновляется в Вики 2.
Обычно почти сразу, изредка в течении часа.
Основа этой страницы находится в Википедии. Текст доступен по лицензии CC BY-SA 3.0 Unported License. Нетекстовые медиаданные доступны под собственными лицензиями. Wikipedia® — зарегистрированный товарный знак организации Wikimedia Foundation, Inc. WIKI 2 является независимой компанией и не аффилирована с Фондом Викимедиа (Wikimedia Foundation).