Оптимизация программы
Материал из Documentation.
Оптимизация программы (ОП) — преобразование компьютерной программы, направленное на улучшение таких её рабочих характеристик, как время выполнения и объём используемой памяти. Одно из требований, предъявляемых к ОП, — её корректность: преобразованная программа должна быть эквивалентна исходной по своим результатам. Иногда допускается, чтобы область определения преобразованной программы была шире исходной области. Другое требование состоит в том, чтобы ОП имела приемлемую алгоритмич. сложность при реализации на ЭВМ.[1]
По степени зависимости оптимизации от особенностей ЭВМ ОП делят на машинно зависимую, машинно ориентированную и универсальную. По размеру оптимизируемого участка программы различают локальную, квазилокальную и глобальную оптимизации. Для ускорения ОП используют факторизацию управляющего графа: программа представляется в виде иерархии вложенных фрагментов (т. н. гамаков, интервалов, зон), а глобальная оптимизация заменяется серией квазилокальных, применяемых к выделенным структурным фрагментам программы.[2]
При ОП часто отделяют фазу анализа программы, на которой выделяются фрагменты управляющего графа, а также выделяются разнообразные свойства программы, существенные с точки зрения улучшения её эффективности, от фазы собственно преобразования, на которой производится улучшение программы.[3]
Разработка алгоритмов оптимизации опирается на теорию схем программ. В свою очередь, методы ОП находят применение при программ верификации и программ синтезе.[4]
[править] Виды
Наиболее важными с практической точки зрения являются следующие виды ОП: уменьшение частот выполнения фрагментов программы («чистка» циклов, зон и рекурсивных областей); экономия избыточных и общих выражений; «чистка» программы за счёт удаления недоступных, неиспользуемых или не влияющих на результат фрагментов программы; упрощающие алгебраич. преобразования с использованием свойств применяемых в программе операций.[5]