Cum să îmbunătățiți performanța aplicațiilor Java în 9 pași

Trăirea în era digitală este o binecuvântare la fel de mare ca și o frustrare. Atunci când computerele și aplicațiile funcționează fără probleme, avem tendința de a le lua de la sine. Însă, atunci când un computer îngheață sau o aplicație coboară un laptop sau un dispozitiv mobil, performanțele slabe cresc stresul.

Indiferent dacă sunteți un dezvoltator care are acces la codul sursă sau pur și simplu un utilizator final care încearcă să accelereze o aplicație Java lent-iritant, avem o veste bună: există pași pe care îi puteți face pentru a îmbunătăți performanța.

Este Java la fel ca JavaScript?

Pe scurt, nu; Java și JavaScript sunt două tehnologii complet diferite. Deși sunt ambele tehnologii orientate pe obiecte, Java este un mediu de dezvoltare în care programatorii pot codifica aplicațiile proiectate pentru a rula local în memoria unui sistem.

JavaScript, pe de altă parte, a fost conceput pentru a crea aplicații web și coincide frecvent cu alte tehnologii web precum HTML și CSS. Astăzi, vom analiza cele mai bune metode de a îmbunătăți performanța aplicațiilor scrise în Java, dar nu JavaScript.

Cauzele performanțelor slabe ale aplicației

Cauzele unei aplicații subperformante sunt vaste, deși principalele cauze sunt o mică mână de probleme. Desigur, primele două cauze sunt proiectarea proastă și codificarea secundară.

Deși IDE-urile și editorii de coduri evidențiază teste și obiecte pentru a le face mai ușor umane, există un decalaj de comunicare între computere și oameni. Vei face greșeli în timp ce creezi o aplicație – nu există nicio cale în jurul ei.

Uneori, computerul nu înțelege intenția dvs. Mai degrabă, el îndeplinește doar instrucțiunile pe care le este dat. În plus față de defectele algoritmice și de codificare, deficiențele resurselor sunt o altă cauză comună.

Hardware-ul local precum RAM și ciclurile procesorului afectează performanțele aplicației, la fel ca și alte resurse, cum ar fi lățimea de bandă a rețelei. În plus, rețineți că problemele sistemului de operare local afectează adesea performanța aplicației.

Cum să îmbunătățiți performanța aplicațiilor Java – 9 pași

Înainte de a săpa mai adânc în fiecare etapă specifică, am dorit să vă oferim o imagine de ansamblu la nivel înalt cu privire la modul de îmbunătățire a performanței aplicațiilor Java, după cum urmează:

  1. Efectuați testarea de profilare și încărcare – profilarea aplicației Java vă va ajuta să descoperiți puncte de durere și blocaje.
  2. Curățați codul și revizuiți algoritmii – codul curat este mai ușor de întreținut, editat, citit și perfecționat; revizuirea algoritmilor dvs. reduce apelurile funcționale tautologice.
  3. Evitați recursul când este posibil – recursivitatea este un rău necesar în unele cazuri, deși ar trebui să fie folosit cu puțin nivel.
  4. Actualizați hardware-ul sistemului – performanțele slabe ale aplicației pot să nu fie înrădăcinate în coduri și algoritmi slabi; în schimb, cauza de bază poate fi legată de sistemul care rulează aplicația.
  5. Mărește lățimea de bandă LAN și WAN – nu toate funcțiile interacționează cu hardware-ul local; dacă aplicația dvs. discută cu sisteme la distanță, ar putea fi de vină infrastructura dvs. de rețea.
  6. Reduceți-vă sistemul de operare – sistemele de operare dezordonate au nevoie de întreținere pentru a rula aplicații cât mai bine.
  7. Utilizați StringBuilder pentru o eficiență îmbunătățită – șirurile sunt aproape inevitabile în majoritatea aplicațiilor, dar operația „+ =” este extrem de ineficientă.
  8. Exploatează memoria cache pentru performanțe îmbunătățite – cache-ul este una dintre cele mai bune metode de a reduce instantanarea obiectului redundant și apelurile funcționale.
  9. Favorizează stiva peste grămadă – stiva este mai eficientă în ceea ce privește resursele sistemului, deoarece se menține și eliberează memoria pe care o ocupă obiectele defuncte.

Cu acest lucru, să aprofundăm puțin mai mult în fiecare metodă pentru a îmbunătăți performanțele aplicațiilor Java.

1. Efectuați testarea profilului și încărcării

Primul pas pentru îmbunătățirea performanței aplicațiilor Java este identificarea zonelor de îmbunătățire. Fără a ști unde sunt cele mai mari probleme, a încerca să grăbești o aplicație este ca și cum arunca o săgeată pe un tablou de dart în timp ce este legat cu ochii. Din fericire, există instrumente software care adună date privind performanța aplicației.

Primul instrument pe care l-am recomanda să îl utilizăm este software cu profil Java. Un astfel de exemplu este YourKit, care este o soluție adecvată atât pentru întreprinderi, cât și pentru utilizatori individuali. YourKit oferă o varietate de licențe, cum ar fi opțiuni de întreprindere, academice, open source și pe loc.

Caracteristicile sale includ, dar nu se limitează la, următoarele:

  • Profilarea performanței procesorului
  • Profilarea performanței memoriei
  • Detectarea scurgerilor de memorie
  • Analize de fire și sincronizare
  • Testare web, bază de date și performanță E / S

Acest instrument a fost proiectat pentru a fi utilizat pe sisteme locale, sisteme la distanță, proiecte aflate în prezent în dezvoltare și chiar software de producție. YourKit nu este singurul profil Java de calitate și are o concurență puternică față de alte soluții EJ-Technologies, care a creat JProfiler.

Acest instrument este foarte similar cu YourKit și oferă opțiuni de testare pentru sesiuni locale și la distanță, declanșatoare offline, comparații instantanee, urmărire a cererilor (HTTP, RMI, serviciu web, EJB, evenimente AWT, lansare thread etc.) și crearea sondelor personalizate printre multe alte funcții. în cele din urmă, JProfiler are, de asemenea, instrumente de profilare hardware, thread, telemetrie și baze de date.

2. Curățați codul și revizuiți algoritmii

Codul sursă al software-ului este ca primul draft al unui roman – nu este perfect niciodată după prima iterație și necesită revizii importante înainte de a fi lustruit definitiv. În primul rând, trebuie să vă străduiți să scrieți un cod curat, care să fie saturat de comentarii, astfel încât să puteți naviga prin textul dvs. și să vă amintiți cu ușurință de ce a fost inițiat fiecare obiect și de ce a fost apelată fiecare funcție.

Deși menținerea curată a codului dvs. nu va face viteza proprie unei aplicații Java, vă ajută să pruneți mai eficient codul inutil și să căutați punctele slabe și redundanța în algoritmi. Codul curat face procesul de depanare mai lin și vă ajută să corectați erorile (cum ar fi scurgerile de memorie) pe care le-ați identificat după profilarea și testarea încărcării software-ului dvs..

3. Evitati recurenta cand este posibil

Recursiunea este o strategie de programare de bază în care o funcție se numește pentru a rezolva o problemă. Recursiunea nu este neapărat malefică, însă este o sabie cu două tăișuri. Are beneficii și utilizări practice. De exemplu, recursiunea face codul mai curat și mai compact și reduce iterațiile tautologice ale buclelor și funcțiilor.

Deoarece recursiunea reduce complexitatea și volumul codului, ajută la o aplicație Java mai ușor de întreținut. Din păcate, aceste beneficii vin la prețul performanței aplicației. Apelurile de recurs și funcții sunt costisitoare în ceea ce privește viteza și performanța, deoarece necesită funcții pop și push pe stivă.

O soluție mai eficientă la recurs, pe de altă parte, este bucla. Operațiunile de buclă pot fi mai greu de citit și sunt compuse din mai multe caractere și cod sursă decât recursiv, dar sunt de preferat atunci când performanța aplicației trebuie maximizată. Este posibil să nu fie întotdeauna practic renunțarea la recurentă cu totul, dar reducerea ei cât mai mult va ajuta la îmbunătățirea performanței aplicațiilor Java.

4. Actualizați hardware-ul sistemului

La suprafață, poate părea că o aplicație Java slabă trebuie să fie cauzată de o problemă software. Deși poate părea contra-intuitiv, cauza principală a performanței slabe poate fi o problemă hardware. Indiferent dacă executați o aplicație Java local sau de la distanță, este posibil ca sistemul în care rulează aplicația Java să nu aibă suficiente resurse de sistem pentru a executa codul în mod satisfăcător.

Cea mai ușoară componentă de actualizat, care afectează în mod direct performanța software-ului este memoria RAM. Prin extinderea cantității de memorie din computer, reduceți șansa ca sistemul să rămână fără spațiu de stocare pentru datele aplicației și să fiți forțat să reveniți la utilizarea hard disk-ului ca RAM improvizată. Această practică este cunoscută sub denumirea de fișier de pagină și, deși are utilizări practice, fișierele de pagini sunt mai indezirabile pentru aplicațiile cu performanțe ridicate decât memoria RAM, deoarece procesul de citire și scriere este semnificativ mai lent pe un hard disk.

În plus, dacă aplicația Java interacționează semnificativ cu hard disk-ul (cum ar fi o copie de rezervă sau o aplicație de sincronizare), actualizarea hard disk-ului poate îmbunătăți performanța sistemului. De exemplu, puteți face upgrade la o unitate cu RPM mai mari pentru proceduri de citire și scriere mai rapide. Cu toate acestea, rețineți că cele mai rapide hard disk-uri sunt SSD-uri (Solid State Drives) și nu conțin părți mobile. În sfârșit, unele sisteme, dar nu toate, sunt capabile să extindă și procesorul, deși nu este la fel de ușor de actualizat ca RAM.

5. Creșteți lățimea de bandă LAN și WAN

Deși hardware-ul local și serverul este o componentă cheie a aplicațiilor Java – inclusiv aplicațiile web Java – nu este singurul blocaj potențial. Indiferent dacă găzduiești aplicații web Java local pe o rețea LAN, pe o intranet sau de la distanță, lățimea de bandă joacă un rol crucial în ceea ce privește disponibilitatea și performanța aplicațiilor tale – în special în perioadele de încărcare maximă.

În general vorbind, lățimea de bandă LAN este de obicei abundentă și ieftină, în timp ce lățimea de bandă WAN este scumpă și este redusă. Cu toate acestea, un alt trafic LAN poate aglomera rețeaua locală la care este conectat serverul care rulează aplicații web Java. Această problemă poate fi rezolvată într-unul din două moduri.

În primul rând, puteți alege să actualizați comutatoarele și infrastructura rețelei locale la o soluție Gigabit Ethernet sau 10Gigabit Ethernet pentru a atenua congestionarea rețelei. În mod alternativ, puteți implementa o politică QoS (Calitatea serviciului) care prioritizează traficul către și de la serverul care găzduiește aplicații Java deasupra altor tipuri de trafic.

În plus, pe lângă creșterea lățimii de bandă WAN (care poate necesita selectarea unui ISP diferit), puteți implementa echilibrarea sarcinii pentru a profita mai bine de conexiunile ISP redundante. Nu uitați, aplicațiile Java cu performanțe slabe pot să nu fie neapărat cauzate de probleme software și pot fi afectate de congestionarea rețelei.

6. Îndreptați-vă sistemul de operare

Sistemele de operare necesită menținere și întreținere pentru a funcționa la performanțe maxime și pentru a utiliza eficient resursele sistemului. Un sistem de operare lipsit de tendință are tendința de a încetini și a se simți lent. De exemplu, este posibil să aveți o mulțime de procese invizibile care se desfășoară în fundal despre care nici nu știați.

Mai mult, procedura de instalare a multor aplicații adaugă automat software nou pe lista de aplicații care se lansează la pornire. Nu numai că aceste aplicații determină o pornire mai lentă a unui sistem, dar, de asemenea, hog resurse de sistem vitale, cum ar fi RAM și cicluri CPU care ar putea fi altfel utilizate pentru a rula o aplicație Java.

Tăierea procesului și a aplicațiilor necesare și nedorite va ajuta la curățarea sistemului dvs. de operare, la fel ca va rula un program de curățare a registrelor pe sistemele Windows. Un program de curățare a registrului poate atenua și elimina erorile DLL și erorile de rulare, prin eliminarea intrărilor eronate în registru și regenerarea structurilor de index.

În plus, o altă sarcină de menaj – care ar trebui să fie folosită cu ușurință – este defragmentarea hard disk-ului. De-a lungul timpului, deoarece fișierele sunt scrise și șterse continuu de pe un hard disk, ele pot deveni o încurcătură extinsă, haotică. Un instrument defrag completează toate datele dvs. și le rescrie în blocuri contigue, ceea ce reduce timpul pentru citirea informațiilor de pe hard disk.

Dar fiți prevestiți: procesul de defragmentare este foarte exigent și impozitează pe hard disk. Dacă îl defragmentați zilnic, săptămânal sau chiar lunar, veți reduce drastic durata de viață a hard disk-ului. O frecvență mai rezonabilă și practică este de aproximativ două până la trei ori pe an.

7. Angajează StringBuilder pentru o eficiență îmbunătățită

Șirurile sunt un tip de date obișnuit în marea majoritate a aplicațiilor – sunt destul de greu de evitat sau ignorat. Din păcate, concatenarea cu coarde este la fel de ineficientă pe cât de frecventă. Poate părea că cea mai bună metodă de concatenare a șirurilor este cu operația „+ =”, dar aceasta este o operație suprautilizată care este extrem de ineficientă.

Problema este că operațiunea „+ =” alocă un șir complet nou de fiecare dată când este utilizat, ceea ce poate crea o mulțime de date șir redundante și inutile. Deși utilizarea acestei operații acum și atunci nu va face ca aplicația dvs. Java să se oprească, orice mică operație se adaugă. Imaginează-ți de câte ori această ineficiență ar putea fi mărită într-o buclă?

Din fericire, există o alternativă mai eficientă. StringBuilder obiectul a fost conceput ca o alternativă eficientă la operațiile de bază de concatenare. Obțineți obișnuința de a utiliza acest tip de date în loc să utilizați stenograful leneș al operației „+ =” dacă doriți să îmbunătățiți performanțele aplicațiilor Java.

8. Exploatează memoria cache pentru o performanță îmbunătățită

Caching-ul este una dintre cele mai eficiente metode de creștere a eficienței aplicațiilor Java. Conceptul de bază al memoriei în cache este de a consolida mai multe apeluri și funcții într-o singură resursă reutilizabilă. Deși există multe forme de cache, atunci când majoritatea oamenilor aici cuvântul „cache”, primul lucru care ne vine în minte este tehnologia bazei de date.

Nu numai că datele conținute într-o bază de date pot fi memorate în cache la nivel local pentru a păstra lățimea de bandă, dar și volumul ridicat de conexiuni la baze de date, care altfel ar încetini o aplicație. Cu toate acestea, fiți conștienți de faptul că memoria cache nu ar trebui suprautilizată. S-ar putea să intuiți intuitiv că totul ar trebui să fie memorat în cache în cazul în care trebuie să îl utilizați din nou în viitorul apropiat. Cu toate acestea, trebuie să vă asigurați că datele și conexiunile pe care le cache sunt suficient de numeroase pentru a vedea un câștig în performanță.

9. Favorizați stiva peste grămadă

Pentru o performanță îmbunătățită a aplicației Java, stocați datele pe stivă în loc de grămadă. De ce intrebi? Deoarece utilizează memoria mai eficient și elimină datele care și-au îndeplinit deja scopul. Nu numai că stiva folosește mai eficient resursele, dar ține deasemenea controlul. Cel mai bun mod de a favoriza stiva peste grămadă este de a evita instantaneizarea claselor de înveliș.

La fel ca utilizarea recursivului, nu este întotdeauna posibil (sau chiar posibil) să renunțe la utilizarea unei clase de înveliș. Dar, ca regulă generală, ar trebui să utilizați în mod implicit tipuri de date primitive, cum ar fi „int”, spre deosebire de Integer. Numărul câștigurilor de performanță pe care le puteți obține în urma utilizării acestei tactici depinde de o multitudine de factori. Cu toate acestea, favorizarea stivei este un bun ghid pentru a găsi calea către cel mai slab și mai eficient cod Java.

Există instrumente pe piață care vă ajută să actualizați cu succes patch-urile Java. Un astfel de instrument este SolarWinds Patch Manager.

SolarWinds Patch Manager

Puteți descărca o funcționare completă 30 de zile de încercare gratuită

SolarWinds Patch Manager Descărcați încercarea GRATUITĂ de 30 de zile

Înrudite: Cele mai bune instrumente de gestionare a patch-urilor

În plus, ar trebui să consultați SolarWinds Instrumentul de monitorizare Java pentru serverele de aplicații cu server & Monitor de aplicații pentru a îmbunătăți performanța. Puteți descărca o funcționare completă 30 de zile de încercare gratuită.

SolarWinds Instrumentul de monitorizare Java pentru serverele de aplicații cu încercare gratuită SAMDown 30 de zile

Gânduri finale

Dacă o aplicație Java lentă și târâtoare îți face sângele să fiarbă, inspiră adânc și nu uita să nu-ți lovești pumnii pe tastatură – nu va face decât să înrăutățească lucrurile. În schimb, inspirați adânc și folosiți una dintre metodele menționate mai sus pentru a accelera performanța aplicațiilor Java.

Dacă aveți povești personale sau anecdote cu privire la accelerarea aplicațiilor Java, vă invităm să comentați mai jos.

About the author

Comments

  1. nătățită – StringBuilder este o alternativă mai eficientă la concatenarea de șiruri de caractere. Exploatați memoria cache pentru o performanță îmbunătățită – memoria cache poate fi utilizată pentru a stoca date frecvent utilizate, reducând astfel timpul de acces la date. Favorizați stiva peste grămadă – stiva este mai rapidă decât grămada, deci ar trebui să încercați să utilizați stiva ori de câte ori este posibil. În general, îmbunătățirea performanței aplicațiilor Java poate fi o sarcină dificilă, dar urmând acești pași, puteți îmbunătăți semnificativ performanța aplicațiilor dvs. și reduce stresul asociat cu performanțele slabe.

Comments are closed.