Оптимізація програм.

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

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

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

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

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

Ссылка на основную публикацию