Реферат: Оптимизация программ

Z=W;

4.2.4. Прочие преобразования

В эту же группу входит

экономия общих подвыражений, заменяющая, например, опера­тор

X:=(A+B)*(A+B+C)/(A+B+E) на фрагмент

Y:=A+B; X:=Y*(Y+C)/(Y+E),

а также такие преобразования, как втягивание вычисления параметров в процедуру, упрощение подстановки параметра-масси­ва, перестройки условных операторов (типа замены оператора

если X>0 && Y<2 то Z:=1

на оператор

если X>0 то начало если Y<2 то Z:=1 конец),

удаление копирований (в частности, заменяющее пересылку значе-

ний массива на пересылку его указателя), другие различные

способы перестройки структуры информационных объектов в за-

висимости от характера их использования и с целью сокращения

времени работы с объектами; различные способы реализации пере-

менных через быстрые регистры, замена рекурсии на циклы .

Другие оптимизирующие преобразования, упрощающие

действия,- это преобразования по объединению и по расчленению

циклов, по перестановке заголовков циклов.

4.3. Реализация действий

Это способ повышения качества программы за счет выполне­ния определенных ее вычислений на этапе трансляции.

Набор преобразований данного типа включает в себя следую­щие оптимизации:

константные действия (подстановка или свертка констант), когда происходит выполнение операций над константами;

распроцедуривание - открытая подстановка тела процедуры на место ее вызова;

ликвидация константных распознавателей - замена условного

оператора на одну из его ветвей, если его выбирающее (услов­ное) выражение имеет константное значение.

Реализация действий осуществляется также при

- втягивании констант, когда выражения, имеющие тождест­венно константные значения, заменяются на эти значения; при аналитических преобразованиях ( например, заменяющих Е*1 на Е или 0*Е на 0, где Е - произвольное подвыражение);

- отождествлении ( или втягивании уникальных), которое удаляет из программы оператор-пересылку вида X:=Y, где X и Y - переменные, заменяя либо вхождение X на Y - втягивание вверх (назад) - например, фрагмент Y:=F(W);X:=Y; заменяется на X:=F(W), либо вхождения Y на X - втягивание вниз (вперед) - например, X:=Y; если Z>0 то W:=Y+1 иначе W:=Y+2 заменяется на фрагмент если Z>0 то W:=X+1 иначе W:=X+2.

4.3.1. Подстановка (свертка)

Операции, операнды которых известны во время компиляции, нет необходимости выполнять во время счета.

К-во Просмотров: 740
Бесплатно скачать Реферат: Оптимизация программ