Оптимизация программ: различия между версиями
KEV (обсуждение | вклад) Нет описания правки |
KVN (обсуждение | вклад) |
||
(не показаны 3 промежуточные версии 2 участников) | |||
Строка 1: | Строка 1: | ||
'''Оптимизация программ''' (''[[Program optimization]]'') | '''Оптимизация программ''' (''[[Program optimization]]'') — | ||
специальные приемы и методы, направленные на улучшение качества выходной программы при трансляции. Проблема построения оптимальной программы ''[[алгоритм|алгоритмически]] не разрешима'', и поэтому основная задача оптимизации состоит в удалении из выходной программы неоптимальностей, возникающих | специальные приемы и методы, направленные на улучшение качества выходной программы при трансляции. Проблема построения оптимальной программы ''[[алгоритм|алгоритмически]] не разрешима'', и поэтому основная задача оптимизации состоит в удалении из выходной программы неоптимальностей, возникающих | ||
в ней из-за универсального способа трансляции. При этом основные способы оптимизации транслируемой программы заключаются в удалении вычислений или объектов из процессов выполнения программы или в замене в них сложных вычислений на более простые. | в ней из-за универсального способа трансляции. При этом основные способы оптимизации транслируемой программы заключаются в удалении вычислений или объектов из процессов выполнения программы или в замене в них сложных вычислений на более простые. | ||
Многие оптимизации можно реализовать, применяя так называемую смешанную стратегию программирования. Суть этого метода состоит в том, что для программирования семантически богатой конструкции | Многие оптимизации можно реализовать, применяя так называемую ''смешанную стратегию'' (mixed strategy) программирования. Суть этого метода состоит в том, что для программирования семантически богатой конструкции входного языка (такой, как цикл или процедура) транслятор использует помимо универсального способа перевода целый ряд специализированных, ориентированных на конкретные, но зато часто встречающиеся в реальных программах варианты использования этой конструкции. | ||
входного языка (такой, как цикл или процедура) транслятор использует помимо универсального способа перевода целый ряд специализированных, ориентированных на конкретные, но зато часто встречающиеся в реальных программах варианты использования этой конструкции. Однако обычно оптимизирующие трансляторы используют метод оптимизирующих преобразований, который в отличие от смешанной стратегии обладает достаточной языковой независимостью. Оптимизирующие преобразования выполняются над транслируемой программой в рамках некоторого ее ''промежуточного представления'' и разделяются на машинно-независимые и машинно-зависимые. По существу, каждое оптимизирующее преобразование включает в себя: анализ потока данных и потока управления в программе, дающий достоверную информацию о возможных вычислениях по программе, о свойствах ее фрагментов и данных, | |||
свойств | Однако обычно оптимизирующие трансляторы используют метод ''оптимизирующих преобразований'' (optimizing transformations), который в отличие от смешанной стратегии обладает достаточной языковой независимостью. Оптимизирующие преобразования выполняются над транслируемой программой в рамках некоторого ее ''промежуточного представления'' (intermediate representation) и разделяются на ''машинно-независимые'' (machine independent) и ''машинно-зависимые'' (machine dependent). По существу, каждое оптимизирующее преобразование включает в себя: ''анализ потока данных'' (data-flow analysis) и ''анализ потока управления'' (control-flow analysis) в программе, дающий достоверную информацию о возможных вычислениях по программе, о свойствах ее фрагментов и данных, — так называемый ''потоковый анализ программ'' (flow analysis of programs); проверку некоторых свойств собранной информации — так называемых ''контекстных условий'' (context conditions); преобразование фрагмента программы в случае удовлетворения этих | ||
свойств — ''собственно'' ''оптимизирующее преобразование'' (actual optimizing transformation) или ''трансформация'' (transformation). | |||
==Литература== | ==Литература== | ||
* Касьянов В.Н. Оптимизация программ // Прикладная информатика. — М.: Финансы и статистика, 1983. --- Вып. 2. | |||
* Касьянов В.Н. Оптимизирующие преобразования программ. — М.: Наука, 1988. | |||
* Касьянов В.Н., Поттосин И.В. Методы построения трансляторов. — Новосибирск: Наука. Сиб. отд-ние, 1986. | |||
[ | [[Категория:Кодогенерация]] | ||
[[Категория:Оптимизирующая трансляция]] | |||
[[Категория:Основные термины]] | |||
[[Категория:Преобразование программ]] |
Текущая версия от 11:33, 28 ноября 2024
Оптимизация программ (Program optimization) — специальные приемы и методы, направленные на улучшение качества выходной программы при трансляции. Проблема построения оптимальной программы алгоритмически не разрешима, и поэтому основная задача оптимизации состоит в удалении из выходной программы неоптимальностей, возникающих в ней из-за универсального способа трансляции. При этом основные способы оптимизации транслируемой программы заключаются в удалении вычислений или объектов из процессов выполнения программы или в замене в них сложных вычислений на более простые.
Многие оптимизации можно реализовать, применяя так называемую смешанную стратегию (mixed strategy) программирования. Суть этого метода состоит в том, что для программирования семантически богатой конструкции входного языка (такой, как цикл или процедура) транслятор использует помимо универсального способа перевода целый ряд специализированных, ориентированных на конкретные, но зато часто встречающиеся в реальных программах варианты использования этой конструкции.
Однако обычно оптимизирующие трансляторы используют метод оптимизирующих преобразований (optimizing transformations), который в отличие от смешанной стратегии обладает достаточной языковой независимостью. Оптимизирующие преобразования выполняются над транслируемой программой в рамках некоторого ее промежуточного представления (intermediate representation) и разделяются на машинно-независимые (machine independent) и машинно-зависимые (machine dependent). По существу, каждое оптимизирующее преобразование включает в себя: анализ потока данных (data-flow analysis) и анализ потока управления (control-flow analysis) в программе, дающий достоверную информацию о возможных вычислениях по программе, о свойствах ее фрагментов и данных, — так называемый потоковый анализ программ (flow analysis of programs); проверку некоторых свойств собранной информации — так называемых контекстных условий (context conditions); преобразование фрагмента программы в случае удовлетворения этих свойств — собственно оптимизирующее преобразование (actual optimizing transformation) или трансформация (transformation).
Литература
- Касьянов В.Н. Оптимизация программ // Прикладная информатика. — М.: Финансы и статистика, 1983. --- Вып. 2.
- Касьянов В.Н. Оптимизирующие преобразования программ. — М.: Наука, 1988.
- Касьянов В.Н., Поттосин И.В. Методы построения трансляторов. — Новосибирск: Наука. Сиб. отд-ние, 1986.