03-07-2023
Оптимизация компилятора — модификация программ, выполняемая оптимизирующими компиляторами или интерпретаторами с целью повышения производительности или компактности программ без изменения их функциональности.
Оптимизация — не обязательный, но важный этап компиляции. В принципе, она может происходить неявно во время трансляции программы, но, как правило, оптимизацию программы выделяют как отдельный этап функционирования компиляторов. Компоновщики также могут выполнять часть оптимизаций, таких как удаление неиспользуемых подпрограмм или их переупорядочивание.
Различают низко- и высокоуровневую оптимизацию. Низкоуровневая оптимизация преобразовывает программу на уровне элементарных команд, например, инструкций процессоров архитектуры x86. Высокоуровневая оптимизация осуществляется на уровне структурных элементов программы, таких как модули, функции, ветвления, циклы.
Содержание |
Включает такие техники, как:
Данный метод оптимизации состоит в замене одной или нескольких инструкций другим, но функционально эквивалентным набором, дающим выигрыш для целевой архитектуры.
Так, для конвейерной архитектуры разделение сложных инструкций на более простые может давать выигрыш в быстродействии, если несколько инструкций могут быть параллельно выполнены на конвейере. Так, например, процессор Pentium MMX быстрее выполнит набор инструкций
dec ecx jnz метка
чем эквивалентную ему инструкцию loop метка
; для ранних процессоров архитектуры x86, от 8086 до 80286, всё иначе, так как они выполняют инструкции неконвейеризированно, вследствие чего команда loop метка
создаёт более экономичный и быстрый код для этих процессоров.
Включает такие техники, как:
Многие оптимизирующие компиляторы ограничивают любые действия по оптимизации подпрограммы её телом, то есть не производят межпроцедурной или полнопрограммной оптимизации.
Оптимизация компилятора.