Оптимизирующий компилятор

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

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

Оптимизация, как правило, реализуется с помощью последовательности оптимизирующих преобразований, алгоритмов, которые принимают программу и изменяют её для получения семантически эквивалентного варианта, который более эффективен с точки зрения какого-либо набора целей оптимизации. Было показано, что некоторые проблемы оптимизации кода являются NP-полными, или даже неразрешимыми. Тем не менее, практически многие из них решаются эвристическими методами, дающими вполне удовлетворительные результаты.

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

Источник: Википедия

а б в г д е ё ж з и й к л м н о п р с т у ф х ц ч ш щ э ю я