Головна Головна -> Реферати українською -> Інформатика, комп'ютери, програмування -> Ефективність програм та методи оптимізації.

Ефективність програм та методи оптимізації.

Назва:
Ефективність програм та методи оптимізації.
Тип:
Реферат
Мова:
Українська
Розмiр:
4,93 KB
Завантажень:
75
Оцінка:
 
поточна оцінка 5.0


Скачати цю роботу безкоштовно
Пролистати роботу: 1  2  3 
Реферат на тему:
Ефективність програм та методи оптимізації.


План
1. Що таке ефективність та вартість оптимізації.
2.Вибір алгоритму.
3. Зниження потужності виразів.
4. Видалення надмірних операцій.
5. Використання констант та ініціалізація змінних.
6. Логічні вирази.
7. Індексація.
8. Оптимізація циклів.
9.Видалення надмірних операцій
10. Порядок вкладання циклів
11. Розгортка циклів
12. Об’єднання циклів
13. Роз’єднання циклів
Література


1. Що таке ефективність та вартість оптимізації.
Перш за все, домовимось про термінологію. Ефективність – це степінь сумірності результатів з витратами. Оптимізація – це покращення характеристик програмної системи або просто програми. Тобто швидкоруч написана програма, яка довго, хоч і правильно працює, очевидно, неефективна. Вона підлягає оптимізації. З іншого боку, ефективна програма нікому не потрібна, якщо вона не забезпечує правильних результатів.
Отже, перший етап програмування – створення правильної програми, і лише другий – її оптимізація. Але перед тим, як починати покращувати ефективність програми, слід перевірити, наскільки це покращення буде корисним, і точно визначити місце, яке слід переробити.
Справа у тому, що існує правило 20/80: 20% об’єктного коду (тексту програми) виконується 80% часу роботи всієї програми. Деякі програми наукових обчислень дають навіть співвідношення 3/90.
Ця невелика частина програми, виконання якої займає більшу частину часу роботи програми, називається критичною областю. Саме критичну область і слід оптимізувати.
У вартості процеса програмування переважну частину складає вартість людської праці, тому при визначенні можливого покращення треба оцінювати обсяг роботи, необхідної для досягнення цього покращення. Наприклад, для кожної підпрограми можна обчислити коефіцієнт
k = (% часу роботи * % покращення) / (необхідні зусилля),
і підпрограма з найвищим значенням коефіцієту k – першочерговий претендент на оптимізацію (якщо мало часу або немає потреби переробляти всю програму).
Існують два підходи до оптимізації програм: “чистка” – виправлення очевидних неохайностей і перепрограмування – заміна алгоритму на більш швидкий (наприклад, сортування зі складністю O(n2) замінити сортуванням зі складністю O(n ln n)).
Багато засобів, які підвищують ефективність програми, не погіршують її зручність для читання, отже, мають використовуватись завжди. В усіх інших випадках слід дотримуватись правила: зручність для читання програми важливіша за її ефективність.
2.Вибір алгоритму.
Найбільш важливим фактором у прискоренні роботи програми є вибір алгоритму або структури даних – між ефективним алгоритмом та неефективним може бути величезна різниця. Невелика ілюстрація до сказаного – наступний приклад, де за рахунок введення додаткової змінної вдається позбавитись від n перевірок в тілі циклу.
for i := 1 to n do
if (i mod 2) = 0 then
S := S + f(i)
else
S := S – f(i);
Тут перевірка умови (i mod 2) = 0 виконується на кожному кроці. | Введемо зайву змінну, яка позбавить від перевірки умови.
mult := -1;
for i := 1 to n do
begin
S := S + mult*f(i);
mult := –mult;
end;
 
3. Зниження потужності виразів.
Цей термін означає такий вид оптимізації, коли більш дорога операція (в сенсі часу виконання) заміняється на більш дешеву. Колись це означало в першу чергу заміну множень додаваннями або зсувами. Для сучасних процесорів тепер це майже нічого не покращує, оскільки множення виконується практично так само швидко, як і додавання. Але ділення та взяття залишку від ділення виконуються суттєво (приблизно в 10 разів) повільніше за множення, отже, код програми значно покращиться, якщо ділення замінити множенням на обернену величину, а взяття залишку при діленні на степені двійки – замінити використанням бітової маски. Отже,
a) |
(* гірший варіант *)
y := 1/(x*x) + cos (2/x); |
(* кращий варіант *)
x1 := 1/x;
y := x1*x1 + cos (2*x1);
б) A/2 краще замінити на A*0.5;
в) A/B/C/D краще замінити на A/(B*C*D);
г) y = ax3 + bx2 + cx + d = a*x*x*x + b*x*x + c*x + d
краще замінити на y = ((a*x + b)*x + c)*x + d.

Завантажити цю роботу безкоштовно
Пролистати роботу: 1  2  3 



Реферат на тему: Ефективність програм та методи оптимізації.

BR.com.ua © 1999-2017 | Реклама на сайті | Умови використання | Зворотній зв'язок