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

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

цикл

начало

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

K:=10;

Здесь I,K - индуктивные переменные. В данном случае из цикла удалено индуктивное выражение K:=I+J.

4.2.2. Замена сложных операций на более простые

Весьма важным преобразованием из этой группы является по­нижение силы операций, заменяющее в индуктивных вычислениях сложные операции на более простые; например, возведение в сте­пень или деление заменяется умножением ( например, выражение Х/4.О заменяется на выражение Х* О.25), а умножение - сложени­ем.

Например, применение этого преобразования позволяет пере­ходить от цикла

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

цикл V:=(K-1)*N+I

к более эффективно работающему фрагменту:

V:=I;

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

цикл

начало A[V]:=A[V]+1;

V:=V+N конец

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

4.2.3. Исключение избыточных выражений

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

Например, эта операция осуществляет переход от фрагмента

если B>0 то

начало

A:=A+2; X:=A*B+C; конец

иначе Y:=A*B+D;

Z:= A*B;

к фрагменту

если B>0 то

начало

A:=A+2; W:=A*B; X:=W+C; конец

иначе начало

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