Оптимізація програмного коду називають зміну коректного коду, спрямоване на підвищення його ефективності. «Оптимізація» має на увазі внесення невеликих змін, які зачіпають один клас, один метод, а найчастіше - кілька рядків коду. Великомасштабні зміни проекту або інші високорівневі способи підвищення продуктивності оптимізацією не зважають. Це не найефективніший спосіб підвищення продуктивності. Поліпшення архітектури програми, перепроектування класів і вибір більш ефективного алгоритму - призводять до більш вражаючих результатів. Крім того, оптимізація коду не найлегший спосіб підвищити продуктивність: легше купити нове обладнання або компілятор з поліпшеним модулем оптимізації. Нарешті, це не найдешевший спосіб підвищити продуктивність: на оптимізацію коду вручну спочатку йде багато часу, а потім оптимізований код важче супроводжувати.
1). Розширити структуру даних додаванням додаткової інформації або змінити уявлення даних в цій структурі. 2). Обчислення результатів заздалегідь і їх зберігання, для подальшого використання. 3). Застосування упаковки даних. 4). Внутрішній цикл повинен містити min мож-ли кількість перевірок, а найкраще тільки одну. 5). Видалення безумовних переходів. 6). Логічні перевірки повинні бути располо-дружини так, щоб більш швидкі умови, які частіше виявляються пра-Вільно, стояли перед більш повільними умовами, які рідше виявляються правільнимі.7). Логічна функція на невеликому безлічі вихідних значень може бути замінена таблицею, що представляє це множество.8). Видалення однакових виразів. 9). Якщо два і більше однакових вираження часто обчислюються поспіль, їх слід винести в підпрограму. 10). Зміна типів даних може виявитися ефективним способом скорочення коду і підвищення його швидкодії. 11). Переписування коду на низкоуровневом мовою. При низькому швидкодії код слід переписати на мові низького рівня. Якщо ви пишете на С ++, мовою низького рівня може бути Assembler. Переписування коду на низкоуровневом мовою зазвичай позитивно впливає на швидкодію коду.
Методи оптимізації коду можуть застосовуватися на різних рівнях синтаксичних конструкцій: 1). на рівні оператора - більшість компіляторів виконують деяку оптимізацію на цьому рівні. 2). на рівні блоку - оптимізуючий компілятор виділяє операційну структуру програмі шляхом конструювання орієнтованого потокового графа програми, в кіт кожна вершина являє основний блок, а зв'язку м / у вершинами представляють потоки управління. Більшість компіляторів виробляють оптимізацію на рівні блоку. 3). на рівні циклу. 4). на рівні програми - найбільш складний рівень оптимізації.
Чим вище рівень оптимізації, тим більше можливостей підвищення швидкодії програмного модуля. Однак витрати на застосування більшою мірою оптимізації можуть значно збільшити час компіляції.
42. Оформлення програм: основні пункти.
1) Опис реалізації (мова, середовище програмування, тестування, передбачуваного виконання):
· Розміри в байтах, операціях, рядках;
· Розміри необхідної пам'яті під дані;
· Необхідні технічні ресурси.
2) Звернення до підпрограми (число, тип і порядок передачі вхідних параметрів): спосіб передачі (за посиланням або за значенням).
3) Опис повертаються параметрів:
· Параметр, який повертає сама функція;
· Опис вхідних параметрів, які функція змінює.
4) Опис виняткових ситуацій і реакція програми на них.
5) Опис повідомлень програми, якщо вони є.
6) Короткий опис алгоритму:
· Якщо має назву, то вказати його;
· Назвати джерело або де наведено текст програми, звідки було взято алгоритм;
· Можна привести блок-схему.
8) Описати все вхідні і вихідні файли і короткий їх вміст.
9) Привести структури записи всіх файлів:
· Розбивка по полях записи;
· Для кожного поля вказати тип, довжину зміщення від початку запису.