Оптимизация программ: различия между версиями
Glk (обсуждение | вклад) (Создана новая страница размером '''Оптимизация программ''' (''Program optimization'') - специальные приемы и методы, напр...) |
KEV (обсуждение | вклад) Нет описания правки |
||
Строка 1: | Строка 1: | ||
'''Оптимизация программ''' (''Program optimization'') - | '''Оптимизация программ''' (''[[Program optimization]]'') - | ||
специальные приемы и методы, направленные на улучшение качества выходной программы при трансляции. Проблема построения оптимальной программы ''алгоритмически не разрешима'', и поэтому основная задача оптимизации состоит в удалении из выходной программы неоптимальностей, возникающих | специальные приемы и методы, направленные на улучшение качества выходной программы при трансляции. Проблема построения оптимальной программы ''[[алгоритм|алгоритмически]] не разрешима'', и поэтому основная задача оптимизации состоит в удалении из выходной программы неоптимальностей, возникающих | ||
в ней из-за универсального способа трансляции. При этом основные способы оптимизации транслируемой программы заключаются в удалении вычислений или объектов из процессов выполнения программы или в замене в них сложных вычислений на более простые. | в ней из-за универсального способа трансляции. При этом основные способы оптимизации транслируемой программы заключаются в удалении вычислений или объектов из процессов выполнения программы или в замене в них сложных вычислений на более простые. | ||
Версия от 18:58, 9 декабря 2009
Оптимизация программ (Program optimization) - специальные приемы и методы, направленные на улучшение качества выходной программы при трансляции. Проблема построения оптимальной программы алгоритмически не разрешима, и поэтому основная задача оптимизации состоит в удалении из выходной программы неоптимальностей, возникающих в ней из-за универсального способа трансляции. При этом основные способы оптимизации транслируемой программы заключаются в удалении вычислений или объектов из процессов выполнения программы или в замене в них сложных вычислений на более простые.
Многие оптимизации можно реализовать, применяя так называемую смешанную стратегию программирования. Суть этого метода состоит в том, что для программирования семантически богатой конструкции входного языка (такой, как цикл или процедура) транслятор использует помимо универсального способа перевода целый ряд специализированных, ориентированных на конкретные, но зато часто встречающиеся в реальных программах варианты использования этой конструкции. Однако обычно оптимизирующие трансляторы используют метод оптимизирующих преобразований, который в отличие от смешанной стратегии обладает достаточной языковой независимостью. Оптимизирующие преобразования выполняются над транслируемой программой в рамках некоторого ее промежуточного представления и разделяются на машинно-независимые и машинно-зависимые. По существу, каждое оптимизирующее преобразование включает в себя: анализ потока данных и потока управления в программе, дающий достоверную информацию о возможных вычислениях по программе, о свойствах ее фрагментов и данных, --- так называемый потоковый анализ программы; проверку некоторых свойств собранной информации --- так называемых контекстных условий; преобразование фрагмента программы в случае удовлетворения этих свойств --- собственно оптимизирующее преобразование (трансформация).
Литература
[Касьянов/88],
[Касьянов-Поттосин],
[Касьянов/83]