Оптимизация программ: различия между версиями

Перейти к навигации Перейти к поиску
нет описания правки
Нет описания правки
Нет описания правки
 
Строка 1: Строка 1:
'''Оптимизация программ''' (''[[Program optimization]]'') -
'''Оптимизация программ''' (''[[Program optimization]]'')
специальные приемы и методы, направленные на улучшение качества выходной программы при трансляции. Проблема построения оптимальной программы ''[[алгоритм|алгоритмически]] не разрешима'', и поэтому основная задача оптимизации состоит в удалении из выходной программы неоптимальностей, возникающих
специальные приемы и методы, направленные на улучшение качества выходной программы при трансляции. Проблема построения оптимальной программы ''[[алгоритм|алгоритмически]] не разрешима'', и поэтому основная задача оптимизации состоит в удалении из выходной программы неоптимальностей, возникающих
в ней из-за универсального способа трансляции. При этом основные способы оптимизации транслируемой программы заключаются в удалении вычислений или объектов из процессов выполнения программы или в замене в них сложных вычислений на более простые.
в ней из-за универсального способа трансляции. При этом основные способы оптимизации транслируемой программы заключаются в удалении вычислений или объектов из процессов выполнения программы или в замене в них сложных вычислений на более простые.


Многие оптимизации можно реализовать, применяя так называемую смешанную стратегию программирования. Суть этого метода состоит в том, что для программирования семантически богатой конструкции
Многие оптимизации можно реализовать, применяя так называемую смешанную стратегию программирования. Суть этого метода состоит в том, что для программирования семантически богатой конструкции
входного языка (такой, как цикл или процедура) транслятор использует помимо универсального способа перевода целый ряд специализированных, ориентированных на конкретные, но зато часто встречающиеся в реальных программах варианты использования этой конструкции. Однако обычно оптимизирующие трансляторы используют метод оптимизирующих преобразований, который в отличие от смешанной стратегии обладает достаточной языковой независимостью. Оптимизирующие преобразования выполняются над транслируемой программой в рамках некоторого ее ''промежуточного представления'' и разделяются на машинно-независимые и машинно-зависимые. По существу, каждое оптимизирующее преобразование включает в себя: анализ потока данных и потока управления в программе, дающий достоверную информацию о возможных вычислениях по программе, о свойствах ее фрагментов и данных, --- так называемый ''потоковый анализ программы''; проверку некоторых свойств собранной информации --- так называемых ''контекстных условий''; преобразование фрагмента программы в случае удовлетворения этих
входного языка (такой, как цикл или процедура) транслятор использует помимо универсального способа перевода целый ряд специализированных, ориентированных на конкретные, но зато часто встречающиеся в реальных программах варианты использования этой конструкции. Однако обычно оптимизирующие трансляторы используют метод оптимизирующих преобразований, который в отличие от смешанной стратегии обладает достаточной языковой независимостью. Оптимизирующие преобразования выполняются над транслируемой программой в рамках некоторого ее ''промежуточного представления'' и разделяются на машинно-независимые и машинно-зависимые. По существу, каждое оптимизирующее преобразование включает в себя: анализ потока данных и потока управления в программе, дающий достоверную информацию о возможных вычислениях по программе, о свойствах ее фрагментов и данных, так называемый ''потоковый анализ программы''; проверку некоторых свойств собранной информации так называемых ''контекстных условий''; преобразование фрагмента программы в случае удовлетворения этих
свойств --- собственно ''оптимизирующее преобразование'' (''трансформация'').
свойств собственно ''оптимизирующее преобразование'' (''трансформация'').
==Литература==
==Литература==
[Касьянов/88],
* Касьянов В.Н. Оптимизация программ // Прикладная информатика. — М.: Финансы и статистика, 1983. --- Вып. 2.


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


[Касьянов/83]
* Касьянов В.Н., Поттосин И.В. Методы построения трансляторов. — Новосибирск: Наука. Сиб. отд-ние, 1986.

Навигация