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

2) программные переменные, используемые в качестве аргу­мента оператора не переопределяются ни на одном пути между оператором и точкой выхода из области;

3) блок является артикуляционным пунктом области;

4) не существует другого определения

программной переменной ни на одном пути между определением и

точкой выхода из области;

5) программная переменная не используется в области.

4.1.2. Сокращение глубины операции

Сокращение глубины операции - процедура выноса за пределы цикла операторов, аргументы которых являются функциями ре­курсивно определяемых переменных, и замена их внутри цикла простыми рекурсивными операторами присваивания, аргументы ко­торых не зависят от других переменных.

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

Приведем пример сокращения глубины операции применительно к оператору t4:=K*10+I из n-го блока :

n-й блок

L:t4:=K*10+I t5:=t6+K z(t2):=z(t2)+x(t4)+y(t5) K:=K+1

переход на L

в результате выполнения этой операции оператор t4:=K*10+I сдвигается в (n-1)-й блок, а в n-м блоке он заменяется опера­тором t4:=t4+10:

(n-1)-й блок

. . .

t4:=K*10+I

n-й блок

L: z(t2):=z(t2)+x(t4)+y(t5)

K:=K+1 t4:=t4+10 t5:=t6+K переход на L

4.2. Упрощение действий

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

4.2.1. Удаление индуктивных переменных и выражений

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

Например, применение указанных преобразований переводит фрагмент

для I:=1, I+1 пока I<100

цикл

начало

K:=I+J; A[K]:= A[K]+1 конец;

K:=10;

во фрагмент

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