русс | укр

Мови програмуванняВідео уроки php mysqlПаскальСіАсемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование


Linux Unix Алгоритмічні мови Архітектура мікроконтролерів Введення в розробку розподілених інформаційних систем Дискретна математика Інформаційне обслуговування користувачів Інформація та моделювання в управлінні виробництвом Комп'ютерна графіка Лекції


Визначення крапок контролю програмного продукту.


Дата додавання: 2014-10-07; переглядів: 901.


Додати у проект клас Log. У програмі викликати методи класу для вионання кожно кроку виконання програми. Переглянути створений класом Log файл.


 

Лекція №5

Тема: Профілювання та оптимізація програмних продуктів.

Мета: Придбати знання з виконання технологічних процесів по профілювання та оптимізації програмних продуктів.

Перелік питань, що розглядаються на лекції:

1. Призначення та функції профілювання.

2. Профілювальник.

3. Мета й завдання профілюваьника.

4. Загальна година виконання.

5. Питомна година виконання.

6. Інформація про пенальті.

7. Проблеми профілювання.

 

 

Відповідно до правила "10/90", десять відсотків коду "з'їдають" дев'яносто відсотків продуктивності системи. Якщо година, витрачений на виконання кожної машинної інструкції, зобразити графічно в порядку зростання їхнього лінійного адресі, на отриманій діаграмі мі виявимо кілька височенних піків, що піднімаються над практично порожньою рівниною, засіяної безліччю низеньких горбків, ці самі піки — і є "гарячі" крапки.

Чому "температура" різних ділянок програми настільки неоднакова? Причина в тім, що переважлива більшість обчислювальних алгоритмів чи так інакше зводяться до циклів, — тобто багаторазовим повторенням одного фрагмента коду, причому найчастіше циклі обробляються не послідовно, а утворять більш-менш глибокі ієрархії. У результаті, велику частину всього години виконання, програма проводити в циклах з найбільшим рівнем вкладення, і саме їхня оптимізація дає найкращий приріст продуктивності!

Громіздкі й гальмові, алі рідко викликувані функції оптимізувати немає ні якого сенсу, — це практично не збільшить швидкодії додатка (ну хіба що тільки в тому випадку, якщо смороду зовсім вуж будуть "криво" написані).

Коли ж алгоритм програми простий, а її вихідний текст вільно вміщається в сотню-іншу рядків, те "гарячі" крапки неважко виявити й візуальним переглядом лістингу. Алі зі збільшенням обсягу коду це стає вусі складніше й складніше. У програмі, що складається з тисяч складно взаємодіючих один з одним функцій (частина з яких це функції зовнішніх бібліотек і API — Application Programming Interface, інтерфейс прикладного програмування — операційної системи) далеко не так очевидно: яка ж саме з їх найбільшою мірою відповідальна за низьку продуктивність додатка. Природний вихід — вдатися до допомоги спеціалізованих програмних засобів.

Профіліровщик (так саме називаний "профайлером") — основний інструмент оптимізатора програм. Оптимізація "у сліпу" рідко дає гарний результат. Згадайте прислів'я "самий повільний верблюд визначає швидкість каравану"? Програмний код поводитися повністю відповідає цьому, і продуктивність додатка визначається самою вузькою його ділянкою. Буває, що винуватницею виявляється одна-єдина машинна інструкція (наприклад, інструкція розподілу, що багаторазово виконується в глибоко вкладеному циклі). Програміст, затративши воістину титанічні зусилля на поліпшення іншого коду, виявиться пребагато здивований, що продуктивність додатка чи навряд зросла відсотків на десять-п'ятнадцять.

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


<== попередня лекція | наступна лекція ==>
Розробка програмного продукту з двома потоками | Мета й завдання профілювання


Онлайн система числення Калькулятор онлайн звичайний Науковий калькулятор онлайн