20474

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

Доклад

Информатика, кибернетика и программирование

Оптимізація це покращення характеристик програмної системи або просто програми. Отже перший етап програмування створення правильної програми і лише другий її оптимізація. Але перед тим як починати покращувати ефективність програми слід перевірити наскільки це покращення буде корисним і точно визначити місце яке слід переробити. Справа у тому що існує правило 20 80: 20 обєктного коду тексту програми виконується 80 часу роботи всієї програми.

Украинкский

2013-07-25

36 KB

1 чел.

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

Ефективність – це степінь сумірності результатів з витратами.Вона є дуже важливою характеристикою.Користувач завжди віддає перевагу більш ефективному рішенню навіть у тих випадках, коли ефективність не є вирішальним фактором.

Оптимізація – це покращення характеристик програмної системи або просто програми.

Отже, перший етап програмування – створення правильної програми, і лише другий – її оптимізація. Але перед тим, як починати покращувати ефективність програми, слід перевірити, наскільки це покращення буде корисним, і точно визначити місце, яке слід переробити.

Справа у тому, що існує правило 20/80: 20% об’єктного коду (тексту програми) виконується 80% часу роботи всієї програми. Деякі програми наукових обчислень дають навіть співвідношення 3/90.

Ця невелика частина програми, виконання якої займає більшу частину часу роботи програми, називається критичною областю. Саме критичну область і слід оптимізувати.

Для підвищення ефективності программ користуюсться такими засобами:

Вибір алгоритму

Найбільш важливим фактором у прискоренні роботи програми є вибір алгоритму або структури даних – між ефективним алгоритмом та неефективним може бути величезна різниця.

Зниження потужності виразів

Цей термін означає такий вид оптимізації, коли більш дорога операція (в сенсі часу виконання) заміняється на більш дешеву. Колись це означало в першу чергу заміну множень додаваннями або зсувами. Для сучасних процесорів тепер це майже нічого не покращує, оскільки множення виконується практично так само швидко, як і додавання. Але ділення та взяття залишку від ділення виконуються суттєво (приблизно в 10 разів) повільніше за множення, отже, код програми значно покращиться, якщо ділення замінити множенням на обернену величину. 

Видалення надмірних операцій 

Якщо деяке складне обчислення зустрічається в вашій програмі декілька разів, виконайте його один раз, запам’ятавши результат. 

Використання констант та ініціалізація змінних. 

Якщо початкові значення надаються змінним одночасно з їх визначенням, відбувається економія часу виконання програми, тому що змінні таким чином ініціалізуються не під час виконання програми, а під час компіляції.

Логічні вирази 

Економії часу можна добитись правильним розташуванням складних логічних виразів. Більшість компіляторів зупиняють подальше обчислення виразу, якщо його результат вже відомий.

Індексація 

Якщо можна не використовувати багатовимірні масиви, то краще цього не робити (при кожному звертанні до елемента багатовимірного масива, наприклад, A[i,j], відбувається перерахування дійсної адреси елементу масива, оскільки у пам’яті масив розташований лінійно). Отже, якщо це можливо, зведіть до мінімуму кількість звертань до елементів масивів, особливо багатовимірних.

Оптимізація циклів 

Цикли завжди утворюють критичну область, отже, мінімальна оптимізація в тілі циклу може значно покращити характеристики програми.

Видалення надмірних операцій 

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

Порядок вкладання циклів 

Організація та виконання циклів типу for вимагають деяких неявних додаткових затрат часу часу на ініціалізацію змінної циклу та на перевірку на кожному кроці необхідності завершення циклу. Правильною організацією вкладених циклів можна економити час роботи програми.


 

А также другие работы, которые могут Вас заинтересовать

76933. Бранхиогенные железы 180.89 KB
  Внутри железы находятся дольки лежащие между фиброзными перегородками трабекулами. Размеры железы: поперечный 3060 мм продольный 50 мм высота перешейка 515 мм; масса железы 2530 г. Паращитовидные железы гландула паратиреоидеа верхние и нижние овальные тельца длиной 48 мм шириной 34 мм толщиной 23 мм.
76934. Неврогенные железы внутренней секреции: гипофиз, мозговое вещество надпочечника, и шишковидная железа – их строение, топография, функция, развитие 186.73 KB
  Эта энтодермальная структура растет в сторону головного мозга и его третьего желудочка проходя через формирующийся интраклиновидный синхондроз и его канал в полость черепа. Над гипофизом в нижней части промежуточного мозга располагается гипоталамус в составе зрительного перекреста зрительных трактов серого бугра с воронкой сосцевидных тел. Эпифиз входит в состав эпиталамической области промежуточного мозга и связан со зрительными буграми поводками и их треугольниками спайками. Он располагается в широкой борозде между верхними холмиками...
76935. Железы адреналовой системы 178.87 KB
  Интерреналовые тельца добавочные надпочечники возникают при развитии почек и надпочечников. Закладка располагается в задней стенке целома между первичными почками и возникает из мезодермальных клеток образующих корковое вещество почек и надпочечников. Мозговое вещество располагается в центре надпочечников и состоит из крупных клеток окрашиваемых солями хрома.
76936. Надпочечники. Происхождение и развитие гландула супрареналис 180.63 KB
  Из него развивается интерреналовая ткань которая дифференцируется в корковое вещество и добавочные надпочечники. В связи с тем что корковое вещество и гонады развиваются из общего источника мочеполовая складка между ними сохраняется структурная близость и функциональная взаимосвязь проявляющаяся выработкой половых гормонов в сетчатой зоне коры надпочечников. Под капсулой располагается корковое вещество состоящее из: клубочковой зоны вырабатывающей гормоны минералокортикоиды: альдостерон кортикостерон дезоксикортикостерон...
76937. Сосуды малого круга 180.57 KB
  Внутри легких артерии ветвятся также как и бронхи пока не возникает вокруг легочного ацинуса микрососудистое русло из которого путем последовательного слияния венул интраорганных вен возникают крупные легочные вены. В воротах легких на одну легочную артерию приходится две легочные вены: верхняя и нижняя. Легочные вены всего четыре пройдя через перикард вливаются в левое предсердие где и заканчивается малый круг.
76938. Аорта и ее отделы. Ветви дуги аорты и ее грудного отдела (париетальные и висцеральные) 183.06 KB
  Ветви дуги аорты и ее грудного отдела париетальные и висцеральные. Она начинается из левого желудочка восходящей частью аорта асценденс переходящей в дугу аркус а далее в нисходящую часть аорта десценденс которая на уровне IVV поясничных позвонков делится бифуркация аорты на правую и левую общие подвздошные артерии. Луковица возникает изза того что аортальные синусы: правый левый задний как бы выпирают стенку аорты кнаружи в поперечнике она имеет 253 см. Аортальные синусы 3 вместе с полулунными заслонками 3 образуют...
76939. Париетальные и висцеральные (парные и непарные) ветви брюшной аорты. Особенности их ветвления и анастомозы 183.28 KB
  Брюшная аорта лежит за брюшиной вдоль передней и левой поверхности поясничного позвоночника повторяя его изгиб кпереди лордоз и разделяясь на уровне IVV позвонков на общие подвздошные артерии: правую и левую. Париетальные ветви брюшной аорты парные правые и левые: нижние диафрагмальные артерии с верхними надпочечниковыми ветвями 124 с началом на уровне аортальной щели диафрагмы; поясничные артерии с дорсальными спинными кожномышечными и спинномозговыми ветвями. Париетальные ветви анастомозируют между собой в задней брюшной...
76940. Подвздошные артерии 182.17 KB
  Общая подвздошная артерия ( a. iliaca communis): правая и левая - магистральные артерии с диаметром в 1,1-1,2 см - начинаются на уровне IV-V поясничных позвонков (бифуркация аорты), направляются в малый таз, боковых ветвей не имеют и на уровне крестцово-подвздошных суставов разделяются на внутреннюю и наружную подвздошные артерии: правые и левые.