Як покращити продуктивність програм Java за 9 кроків

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


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

Чи Java така сама, як JavaScript?

Словом, ні; Java та JavaScript – дві абсолютно різні технології. Хоча вони обидві об’єктно-орієнтовані технології, Java – це середовище розробки, в якому програмісти можуть кодувати програми, призначені для локального запуску в пам’яті системи..

JavaScript, з іншого боку, був розроблений для створення веб-додатків і часто збігається з іншими веб-технологіями, такими як HTML та CSS. Сьогодні ми розглядаємо найкращі способи підвищення ефективності програм, написаних на Java, але не JavaScript.

Причини низької продуктивності програми

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

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

Комп’ютер іноді не розуміє вашого наміру. Швидше, він виконує лише ті інструкції, які йому дані. Крім недоліків алгоритміки та кодування, недостатність ресурсів – ще одна поширена причина.

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

Як поліпшити продуктивність програми Java – 9 кроків

Перш ніж заглибитися в кожен конкретний крок, ми хотіли дати вам високий рівень огляду щодо того, як поліпшити продуктивність Java-програм, наступним чином:

  1. Проведіть тестування профілювання та навантаження – Профілювання програми Java допоможе розкрити больові точки та вузькі місця.
  2. Очистити код та переглянути алгоритми – чистий код легше підтримувати, редагувати, читати та вдосконалювати; перегляд алгоритмів зменшує виклики тавтологічних функцій.
  3. По можливості уникайте рекурсії – рекурсія в деяких випадках є необхідним злом, хоча його слід застосовувати ощадливо.
  4. Оновлення апаратного забезпечення системи – низька продуктивність програми може не вкорінюватися в поганому коді та алгоритмах; натомість основна причина може бути пов’язана із системою, в якій працює програма.
  5. Збільшити пропускну здатність LAN та WAN – не всі функції взаємодіють з місцевим обладнанням; якщо ваша програма розмовляє з віддаленими системами, винна в цьому ваша мережева інфраструктура.
  6. Налаштуйте операційну систему – брудні операційні системи потребують технічного обслуговування, щоб запускати додатки якнайкраще.
  7. Використовуйте StringBuilder для підвищення ефективності – рядки майже неминучі в більшості програм, але операція «+ =» є вкрай неефективною.
  8. Використовуйте кешування для покращення продуктивності – кешування – один з найкращих способів зменшити зайві екземпляри об’єктів та виклики функцій.
  9. Віддайте перевагу стеку над купу – стек є більш ефективним щодо системних ресурсів, тому що він підтримує себе і звільняє пам’ять, яка недіючі об’єкти займають.

Зважаючи на це, давайте детальніше поглибимось у кожен метод, щоб покращити продуктивність програми Java.

1. Проведіть тестування профілювання та навантаження

Перший крок до підвищення продуктивності Java-програм – визначення областей для вдосконалення. Не знаючи, де виникають найбільші проблеми, намагатися пришвидшити додаток – це як кинути дротик на дротику, зав’язавши очі. На щастя, є програмні засоби, які збирають дані щодо продуктивності програми.

Перший інструмент, який ми рекомендували б використовувати, – це програмне забезпечення для профілювання Java. Один з таких прикладів YourKit, що є відповідним рішенням як для підприємств, так і для окремих користувачів. YourKit пропонує різноманітні ліцензії, такі як корпоративні, академічні, з відкритим кодом та варіанти на місце.

Його функції включають, але не обмежуються цим, наступне:

  • Профілювання продуктивності процесора
  • Профілювання продуктивності пам’яті
  • Виявлення витоку пам’яті
  • Нитки та аналіз синхронізації
  • Тестування продуктивності веб, баз даних та вводу / виводу

Цей інструмент був розроблений для використання в локальних системах, віддалених системах, проектах, які наразі розробляються, і навіть виробничому програмному забезпеченні. YourKit однак не єдиний якісний Java-профілер і має сильну конкуренцію з боку інших рішень EJ-Technologies, який створив JProfiler.

Цей засіб дуже схожий на YourKit і надає варіанти тестування для локальних та віддалених сеансів, тригерів офлайн, порівняння знімків, відстеження запитів (HTTP, RMI, веб-сервіс, EJB, події AWT, запуски потоків тощо) та створення спеціальних зондів серед багатьох інших функцій. Нарешті, JProfiler також є апаратні засоби, нитки, телеметрія та засоби профілювання баз даних.

2. Очистити код і переглянути алгоритми

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

Хоча збереження чистого коду не сприятиме прискоренню програми Java, але це допоможе вам ефективніше обрізати непотрібний код та шукати недоліки та надмірність у ваших алгоритмах. Чистий код також робить процес налагодження більш гладким і допомагає виправляти помилки (наприклад, витоки пам’яті), які ви виявили після профілювання та завантаження тестування програмного забезпечення.

3. Уникайте рекурсії, коли це можливо

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

Оскільки рекурсія зменшує складність та об’єм коду, це допомагає зробити додаток Java простішим в обслуговуванні. На жаль, ці переваги мають ціну продуктивності програми. Рекурсійні та функціональні дзвінки є дорогими щодо швидкості та продуктивності, тому що вони вимагають функцій pop та push на стеці.

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

4. Оновлення апаратного забезпечення системи

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

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

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

5. Збільшити пропускну здатність LAN та WAN

Хоча локальне та серверне обладнання є ключовим компонентом Java-додатків, включаючи веб-додатки Java, це не єдине потенційне вузьке місце. Незалежно від того, чи ви розміщуєте веб-додатки Java локально в локальній мережі, в інтрамережі або віддалено, пропускна здатність відіграє вирішальну роль щодо доступності та продуктивності ваших додатків, особливо під час пікового навантаження.

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

По-перше, ви можете вибрати оновлення комутаторів та локальної мережевої інфраструктури до рішення Gigabit Ethernet або 10Gigabit Ethernet, щоб зменшити перевантаженість мережі. Крім того, ви можете реалізувати політику QoS (Якість обслуговування), яка надає пріоритет до трафіку на сервер і з ним, що розміщує додатки Java, над іншими видами трафіку..

Крім того, крім збільшення пропускної здатності WAN (що може вимагати вибору іншого провайдера), ви можете впровадити балансування навантаження, щоб краще скористатися надмірними з’єднаннями провайдера. Пам’ятайте, що неякісні програми Java не обов’язково можуть бути спричинені проблемами з програмним забезпеченням, і на них може вплинути перевантаженість мережі.

6. Налаштуйте операційну систему

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

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

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

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

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

7. Використовуйте StringBuilder для підвищення ефективності

Рядки – це поширений тип даних у переважній більшості програм – їх досить важко уникнути або проігнорувати. На жаль, конкатенація струн настільки ж неефективна, як і часта. Може здатися, що найкращий спосіб об’єднати рядки – це операція “+ =”, але це надмірно використана операція, яка дико неефективна.

Проблема полягає в тому, що операція «+ =» виділяє абсолютно новий рядок щоразу, коли вона використовується, що може створити багато зайвих і непотрібних рядкових даних. Хоча використання цієї операції раз і потім не призведе до того, що ваша програма Java не зупиниться, кожна маленька операція додається. Уявіть, скільки разів ця неефективність може бути збільшена в циклі?

На щастя, існує більш ефективна альтернатива. The StringBuilder Об’єкт був розроблений як ефективна альтернатива основним операціям конкатенації. Увійдіть у звичку використовувати цей тип даних замість ледачого скорочення операції «+ =», якщо ви хочете покращити продуктивність програм Java.

8. Використовуйте кешування для покращення продуктивності

Кешування – один з найефективніших способів підвищення ефективності додатків Java. Основна концепція кешування полягає в об’єднанні декількох викликів і функцій в один ресурс для багаторазового використання. Хоча існує багато форм кешування, коли більшості людей тут слово “кешування”, перше, що спадає на думку, це технологія баз даних.

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

9. Віддайте перевагу стеку над купу

Для покращення продуктивності додатків Java зберігайте свої дані в стеку замість купи. Чому ти питаєш? Тому що вона більш ефективно використовує пам’ять і видаляє дані, які вже виконували своє призначення. Мало того, що стек ефективніше використовує ресурси, але й постійно перевіряє накладні витрати. Найкращий спосіб віддати перевагу стеку над купою – це уникати миттєвих класів обгортки.

Як і використання рекурсії, не завжди можливо (або навіть можливо) відмовитися від використання класу обгортки. Але як загальне правило, вам слід використовувати за замовчуванням використання примітивних типів даних, таких як “int”, на відміну від Integer. Кількість результативності, яку ви можете отримати від використання цієї тактики, залежить від безлічі факторів. Тим не менш, надання переваги стеку – це хороший посібник для пошуку шляху до найпростішого та найефективнішого коду Java.

На ринку є інструменти, які допоможуть вам успішно оновлювати патчі Java. Одним із таких інструментів є Сонячні вітри Менеджер патчів.

Менеджер патчів SolarWinds

Ви можете завантажити повністю функціонуючу 30-денна безкоштовна пробна версія

SolarWinds Patch ManagerЗавантажте 30-денну безкоштовну пробну версію

Пов’язане: Найкращі засоби управління виправленнями

Крім того, ви повинні перевірити SolarWinds Інструмент моніторингу Java для серверів додатків із сервером & Монітор додатків для підвищення продуктивності. Ви можете завантажити повністю функціонуючу 30-денна безкоштовна пробна версія.

SolarWinds Інструмент моніторингу Java для серверів додатків із SAMDownload 30-денною безкоштовною пробною версією

Фінальні думки

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

Якщо у вас є якісь особисті історії чи анекдоти щодо прискорення програм Java, ми пропонуємо вам прокоментувати нижче.

Kim Martin Administrator
Sorry! The Author has not filled his profile.
follow me
    Like this post? Please share to your friends:
    Adblock
    detector
    map