Студопедия.Орг Главная | Случайная страница | Контакты | Мы поможем в написании вашей работы!  
 

Оптимизация программ



Если не принять специальных мер, в результате трансляции получаются программы,

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

Оптимизация на первых этапах (проходах) трансляции может быть эффективной потому, что программа в этот период компактна, хорошо обозрима, а главное – мобильна.

“Плюсы” оптимизации на последних этапах (проходах) очевидны – именно там аккумулируются результаты неоптимальных решений на всех предыдущих этапах трансляции.

Оптимизация на начальных этапах:

1. Предварительное вычисление выражений.

При данных x:= 2; y:= 3;

оператор z:= x + y + 10

замена на z:= 15;

2. Исключение невыполнимых ветвей. То есть тех ветвей, которые соответствуют невыполнимому сочетанию условий.

3. Выделение общих частей.

w:= (x + y) * z; заменяет на a:= w - 35; b:= w/a;


a:= (x + y) * z - 35;

b:= ((x + y) * z) / a;

4. Вынесение за цикл.

for i:= 1 to 10 do begin

x:= x + i; P(x);

k:= b + c; /* выносится за цикл, т.к. не зависит

от параметра цикла */.

end;

Измененный вариант

k:= b + c;

for i:= 1 to 10 do begin

x:= x + i; P(x);

end;

5. Вычисление логических выражений.

x => y & (z = 5 Ú x ¹ 5)

Так, например, при ложном условии x => y конъюнкция ложна вне зависимости от истинности условия в скобках. А само условие в скобках при истинности z = 5 истинно вне зависимости от выполнения второго скобочного условия.

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





Дата публикования: 2014-11-03; Прочитано: 276 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!



studopedia.org - Студопедия.Орг - 2014-2024 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.007 с)...