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

Свертка главным образом применяется к арифметическим опе­раторам +,-,*,/, т.к. они наиболее часто используются в исход­ной программе.

Например, для линейного участка

А:= 1+1

А:= 3

В:= 7+А,

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

(1) + 1,1 (2) := (1), А

(3) := 3,А (4) + 7,(3)

(5) := (4),В

1-ю триаду можно вычислить во время компиляции и заменить на результирующую константу, аналогично можно вычислить 4-ю триаду

.

Получается следующий результат свертки:

(1) := 2,А (2) := 3,А (3) := 10,В

Подстановка является полностью внутриблочной процедурой выполняется перед устранением излишних команд.

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

Обычно свертка осуществляется только в пределах линейного участка с помощью специальной таблицы Т, вначале пустой. В процессе свертки Т содержит пары (А,К) для всех простых пере­менных А, для которых известно текущее значение К. Кроме того, если программа во внутреннем представлении представлена, нап­ример, в виде триад, то каждая свертываемая триада заменяется

новой триадой (С,К,0), где С(константа) - новый оператор, для

которого не нужно генерировать команды, а К - результирующее

значение свернутой триады.

Алгоритм свертки последовательно просматривает триады ли­нейного участка и для каждой триады делает следующее:

1) Если операнд есть переменная, которая содержится в таблице Т, то операнд заменяется на соответствующее значение К.

2) Если операнд есть ссылка на триаду типа (С,К,0), то операнд заменяется на константу К.

3) Если все операнды являются константами и операция мо­жет быть свернута, то данная триада исполняется и вместо нее подставляется триада (С,К,0), где К - результирующее значение.

4) Если триада является присваиванием А:=В значения пере­менной без индекса А, то:

а) если В - константа, то А со значением В заносится в таблицу Т (старое значение А, если оно было, исключается);

б) если В - не константа, то А со своим значением исклю­чается из Т, если она там была.

4.4. Чистка программы

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

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

- удаление идентичных операторов;

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