Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции по СПО [укр. язык].DOC
Скачиваний:
46
Добавлен:
02.05.2014
Размер:
526.85 Кб
Скачать

Оптимізація лінійної ділянки.

Лінійна ділянка (блок) програми характеризується ,

де

P – послідовність операторів, дорівнює Bi (Bi типу a:=f(b1,…,bn));

B0 – означає для вхідних даних;

Bn+1 – означає для вихідних даних;

I – множина вхідних даних для блоку;

U – множина вихідних даних для блоку.

Існує чотири операції над блоками:

  1. T1 – видалення непотрібних привласнень:

Якщо (послідовність операторів) не використовує A1, тоді говорять, що область дії A1 є пустою, при цьому вона може бути видалена. Наприклад,

F=a+a; {визначаємо F }

G=F+c; {визначаємо G}

F=F+b; {тут G не використовується }

G=a+b; {нове визначення G, тому другу стрічку можна видалити }.

  1. T2 – видалення надлишку обчислень:

Якщо не змінюється в A1, тоді

  1. T3 – перейменування, наприклад,

T=a+b; S=a+b;

T=T+a; T=S+a;

T=T*T; T=T*T;

K=a+b; K=S;

  1. T4 – перестановка там де не змінюються ліві частини.

Теорема: Застосування T1,T2,T3,T4 переводить блок , еквівалентну , тобто при рівних вхідних даних ми отримаємо рівні вихідні дані.

Оптимізація лінійної ділянки зводиться до наступного:

  • Вибираємо функцію оцінки блоку, область визначення є блок, область значень – раціональне число. Область визначення повинна бути такою, щоб зменшувалась область значень. За функцію оцінки беруть сумарний час виконання операції (вводяться терези операції або ж деякі характеристики процесора);

  • Видаляються зайві обчислення, перейменування та перестановки;

  • Обчислюється функція оцінки, виконується до тих пір доки функція оцінки за деяку кількість проходів залишається незмінною.

Глобальна оптимізація коду.

Описаний алгоритм може бути використаний частково для глобальної оптимізації коду. Глобальна оптимізація коду пов’язана з аналізом управління програмою, а з іншого боку з аналізом потоку даних. Маємо деякий алгоритм програми, який розбитий на блоки:

Для оптимізації даної ділянки програми визначається чотири типа даних для кожного блоку:

- дані, які активні при вході в блок та змінюються в блоці;

- дані, які активні при вході та не змінюються в блоці;

- дані, які не активні на вході та активні на виході;

- дані, які генеруються блоком, наприклад, read(i), та не перевизначаються

в блоці.

Оператори IN, TRANS, GEN визначають не самі дані, а й команди, в яких змінюються ці дані. Виділяються лінійні ділянки (інтервали). Інтервал містіть:

  • Заголовок, тобто перша команда цього інтервалу;

  • Всі команди, на які є передача управління лише з цього інтервалу.

I(F) є похідний граф від F.

Означення. Граф називається зведеним, якщо можна на m-тому крокові отримати похідний граф із однієї вершиною.

Відмінність глобальної оптимізації від локальної оптимізації:

  • Аналізується граф управління та потоки даних;

  • Все зводиться до виконання T1,T2,T3,T4 та використанню в ролі лінійних ділянок даних інтервалів. Суттєву роль грає критерій оптимальності. Якщо це об’єм пам’яті, тоді зайві операції виносяться вище всіх блоків, якщо це час виконання, тоді, навпаки, заносяться в ті місця, де вони використовуються;

  • Функція оцінки блоку буде містити в собі особливості управляючих структур та критерій оптимальності. Функція оцінки лінійної ділянки буде відрізнятися від функції оцінки інтервалу.

Соседние файлы в предмете Системное программное обеспечение