Оптимизация компилятора

Оптимизация компилятора

Оптимизация компилятора — модификация программ, выполняемая оптимизирующими компиляторами или интерпретаторами с целью повышения производительности или компактности программ без изменения их функциональности.

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

Различают низко- и высокоуровневую оптимизацию. Низкоуровневая оптимизация преобразовывает программу на уровне элементарных команд, например, инструкций процессоров архитектуры x86. Высокоуровневая оптимизация осуществляется на уровне структурных элементов программы, таких как модули, функции, ветвления, циклы.

Содержание

Низкоуровневая оптимизация

Включает такие техники, как:

Объединение и разделение инструкций

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

Так, для конвейерной архитектуры разделение сложных инструкций на более простые может давать выигрыш в быстродействии, если несколько инструкций могут быть параллельно выполнены на конвейере. Так, например, процессор Pentium MMX быстрее выполнит набор инструкций

  dec ecx
  jnz метка

чем эквивалентную ему инструкцию loop метка; для ранних процессоров архитектуры x86, от 8086 до 80286, всё иначе, так как они выполняют инструкции неконвейеризированно, вследствие чего команда loop метка создаёт более экономичный и быстрый код для этих процессоров.

Высокоуровневая оптимизация

Включает такие техники, как:

  • Удаление недосягаемого («мёртвого») кода и неиспользуемых присвоений
  • Подгонка, обращение циклов
  • Оптимизация множественных ветвлений
  • Развёртка, свёртка, объединение и разделение циклов
  • Вычисление инвариантов циклов, вынесение общих подвыражений и кода в ветвлениях, вынесение ветвлений из циклов
  • Переключение, объединение и разделение ветвлений
  • Предвыборка данных
  • Переупорядочивание функций
  • Встраивание и извлечение функций

Локальность оптимизации

Многие оптимизирующие компиляторы ограничивают любые действия по оптимизации подпрограммы её телом, то есть не производят межпроцедурной или полнопрограммной оптимизации.

Литература

  • Касьянов В. Н. Оптимизирующие преобразования программ. — М.: Наука, 1988. — 336 с.



Wikimedia Foundation. 2010.

Игры ⚽ Поможем сделать НИР

Полезное


Смотреть что такое "Оптимизация компилятора" в других словарях:

  • Оптимизация — Оптимизация: В Викисловаре есть статья «оптимизация» Оптимизация (математика)  нахождения …   Википедия

  • Оптимизация (информатика) — Эта статья об оптимизации программ и данных вообще; об оптимизациях, применяемых компиляторами см.: Оптимизация компилятора. У этого термина существуют и другие значения, см. Оптимизация. Оптимизация  модификация системы для улучшения её… …   Википедия

  • Оптимизация (вычислительная техника) — Это статья об оптимизации программ и данных на всех этапах программирования. Об оптимизациях, применяемых компиляторами, см.: Оптимизация компилятора. В информатике оптимизацией называется процесс модификации системы для улучшения её… …   Википедия

  • Оптимизация (компьютер) — Это статья об оптимизации программ и данных на всех этапах программирования. Об оптимизациях, применяемых компиляторами, см.: Оптимизация компилятора. В информатике оптимизацией называется процесс модификации системы для улучшения её… …   Википедия

  • Оптимизация (программирование) — Это статья об оптимизации программ и данных на всех этапах программирования. Об оптимизациях, применяемых компиляторами, см.: Оптимизация компилятора. В информатике оптимизацией называется процесс модификации системы для улучшения её… …   Википедия

  • Оптимизация кода — Это статья об оптимизации программ и данных на всех этапах программирования. Об оптимизациях, применяемых компиляторами, см.: Оптимизация компилятора. В информатике оптимизацией называется процесс модификации системы для улучшения её… …   Википедия

  • Оптимизация ресурсов — Это статья об оптимизации программ и данных на всех этапах программирования. Об оптимизациях, применяемых компиляторами, см.: Оптимизация компилятора. В информатике оптимизацией называется процесс модификации системы для улучшения её… …   Википедия

  • Межпроцедурная оптимизация — (англ. Interprocedural Optimization, IPO) или полнопрограммная оптимизация  оптимизация компилятора, которая затрагивает несколько процедур, зачастую находящихся в разных модулях. Такую оптимизацию можно применить, лишь проанализировав… …   Википедия

  • Оптимизатор — Оптимизация: Оптимизация (математика)  нахождение оптимума (максимума или минимума) функции при выполнении некоторых ограничений Оптимизация (информатика)  процесс модификации системы для улучшения её эффективности. Оптимизация компилятора … …   Википедия

  • Оптимизирующий компилятор — Эта статья предлагается к удалению. Пояснение причин и соответствующее обсуждение вы можете найти на странице Википедия:К удалению/24 декабря 2012. Пока процесс обсужден …   Википедия


Поделиться ссылкой на выделенное

Прямая ссылка:
Нажмите правой клавишей мыши и выберите «Копировать ссылку»