Câștiguri:
- Luând mai întâi un profil și măsurând blocajul real, realizând optimizarea bazată pe date mai degrabă decât pe presupuneri și având ca rezultatul profilului să fie interpretat de inteligența artificială
- Abilitatea de a viza cea mai costisitoare operațiune în ceea ce privește timpul de pornire, fluența, memorie și baterie și de a elimina munca grea din firul principal
- Abilitatea de a gestiona costul bateriei și al procesorului pentru capabilitățile AI, cum ar fi modelul pe dispozitiv și apelurile în cloud prin eșantionare și procesare în lot
Utilizatorii de telefonie mobilă sunt nerăbdători. Dacă aplicația se deschide lent, se blochează în timpul derulării sau consumă rapid bateria, utilizatorul o șterge și îi acordă o evaluare cu stele în magazin. Performanța și eficiența bateriei sunt o chestiune de supraviețuire a unei aplicații mobile; Afectează direct atât satisfacția utilizatorilor, cât și clasarea magazinului. AI este un ajutor puternic în detectarea blocajelor de performanță (obstacole), interpretarea rezultatelor măsurătorilor și recomandarea de optimizări. Dar regula de aur rămâne: măsurați mai întâi, optimizați mai târziu. În această unitate, vom învăța să rezolvăm problemele de performanță și de baterie într-un mod bazat pe date cu AI. O problemă deosebit de importantă este gestionarea impactului asupra bateriei și performanței abilităților AI pe care le-am adăugat în unitățile anterioare (model pe dispozitiv, apelare în cloud).
Optimizarea fără măsurare
Cea mai mare greșeală a unui dezvoltator neexperimentat este optimizarea predictivă: pierderea timpului spunând „acesta trebuie să fie lent”. Adevăratul blocaj este aproape întotdeauna într-un loc neașteptat. Deci, mai întâi este luat profilul (profilare — măsurarea părții aplicației consumă cât timp/memorie/baterie). Android Studio Profiler și Xcode Instruments sunt pentru acest job. Oferirea datelor de măsurare către AI accelerează interpretarea; Dar fără măsurare, a spune AI „aplicația mea este lentă, accelerează-o” înseamnă a face predicții orbește.
Cele patru axe principale ale performanței sunt:
axa
simptom
cauza tipica
Ora de începere
Aplicația se deschide târziu
Lucrări grele pe firul principal
Fluență (jank)
Defilarea se blochează
Procesare lungă, redesenare inutilă în firul UI
memorie
umflare, colaps
Scurgere, imagine mare, cache necontrolată
baterie/caldura
ejaculare rapidă
Locație continuă, rețea, senzor, job de fundal
Sfat: când întrebați AI despre o problemă de performanță, dați rezultatul profilului (care funcție durează, graficul memoriei). Datele rigide precum „Acea funcție durează 30 ms pe cadru” permit AI să se concentreze asupra blocajului real; O frază subiectivă precum „lent” produce un răspuns generic și inutil.
Costul bateriei abilităților AI
Caracteristicile AI pe care le-am adăugat în acest modul sunt puternice, dar nu sunt gratuite. Extragerea unui model de pe dispozitiv solicită procesorul și bateria; O recunoaștere a imaginii care rulează constant (de exemplu, camera care procesează fiecare cadru) va încălzi telefonul și va descărca bateria în câteva minute. Apelurile Cloud AI, pe de altă parte, consumă bateria menținând radioul de rețea (antena care trimite și primește date) tot timpul. Soluții: rulați modelul de pe dispozitiv numai atunci când este necesar, eșantionați camera de câteva ori pe secundă în loc de fiecare cadru, trimiteți în serie solicitări cloud, faceți treaba grea în timp ce dispozitivul se încarcă sau este inactiv.
Atenție: o funcție AI care rulează constant (traducere în direct, recunoaștere continuă a obiectelor) poate descărca foarte repede bateria, poate încălzi dispozitivul și poate fi accelerată de sistem. O caracteristică care îl face pe utilizator să simtă că acest cost este ștears. Întotdeauna întreb AI „cum fac această funcție prietenoasă cu bateriile?” Pune și întrebarea.
Etape de optimizare
- Măsură. Găsiți adevăratul blocaj cu Profiler; nu ghici.
- Alege cea mai mare problemă. Nu urmăriți îmbunătățirea cu 1%; Țintește-te spre cea mai scumpă tranzacție.
- Întrebați AI cu date. Solicitați sugestie de optimizare cu rezultatul profilului + codul relevant.
- Aplicați și măsurați din nou. Este reală îmbunătățirea? A scăzut numărul?
- Controlul regresiei. Optimizarea a spart ceva? Repetați testele vizuale și funcționale.
trei mini cutii
Cazul 1 — Căutarea în locul greșit. O echipă a crezut că listele au fost blocate și a reelaborat codul de defilare timp de săptămâni fără rezultat. Când au luat profilerul și au transmis datele către AI, s-a dovedit că adevăratul blocaj au fost imaginile reîncărcate prin rețea cu fiecare rând. Când a fost adăugată memoria cache vizuală, fluența a crescut de la 42 FPS la 60 FPS. Lecție: măsurarea evită săptămâni de efort zadarnic.
Cazul 2 — Funcția monstru baterie. O aplicație de traducere a adăugat traducerea textului în direct cu camera; Utilizatorii s-au plâns că „telefonul s-a încălzit în 15 minute și 30% din baterie a dispărut”. Când a fost consultată AI, sa constatat că camera procesează 30 de cadre pe secundă; Când aceasta a fost redusă la 5 cadre și rezultatul a fost actualizat la câteva cadre distanță, consumul bateriei a scăzut la o treime, iar calitatea nu a fost vizibilă. Lecție: Setați întotdeauna AI cu ochiul bateriei.
Cazul 3 - Debut lent. O aplicație se deschidea în 4,5 secunde; 20% dintre utilizatori au ieșit la pornire. Profilul a arătat că toată munca inițială (analiza, încărcarea datelor, pregătirea modelului) a fost făcută secvenţial pe firul principal. Odată cu propunerea AI, acestea au fost amânate și puse pe fundal; Timpul de deschidere a fost redus la 1,3 secunde, iar rata de abandon a fost redusă la jumătate. Lecție: faceți doar lucrări esențiale la început.
Prompt slab / Prompt puternic
Solicitare slabă: „Aplicația mea este lentă, accelerați-o”.
Prompt puternic: „Defilarea listei se blochează (jank) în aplicația mea Android. Datele de profil: bindImageView durează 28 ms pe fiecare cadru, imaginile sunt încărcate din rețea de fiecare dată, nu există cache. Cod înrudit: [Cod adaptor RecyclerView]. Recomandați cele 3 optimizări cele mai eficiente în ordinea impactului. Indicați câștigul așteptat și soluțiile de calitate anterioară nu reduc efectele secundare posibile pentru fiecare imagine.”
Șabloane copiabile
Șablon de analiză a blocajului: „Interpretează următoarele date de profil și găsește cele mai scumpe 3 operațiuni: [ieșire de profil]. Sugerează cauza posibilă și optimizare concretă pentru fiecare. Oferă mai întâi cel mai mare impact.”
Șablon de optimizare a bateriei: „Această caracteristică consumă rapid bateria: [funcție, de exemplu, locație permanentă]. Faceți-o prietenoasă cu bateria:- Reduceți frecvența de eșantionare- Restricție în fundal- Procesare în lot- Rulați numai când este necesar Sortați soluțiile fără a perturba experiența utilizatorului. [cod]"
Șablon de accelerare a pornirii: „Accelerează pornirea aplicației. Lucruri care se fac în prezent la pornire: [listă]. Care pot fi amânate, în fundal sau încărcate în mod leneș? Separați-le pe cele esențiale. [cod]”
Șablon de cost al funcției AI: „Evaluați performanța și costul bateriei pentru funcția [model pe dispozitiv/apel în cloud] pe care am adăugat-o. Enumerați valorile pe care ar trebui să le măsurez și strategiile pentru a reduce costul. [cod]”
Greșeli comune
- Optimizarea fără măsurare. Adevărata blocaj este adesea într-o locație diferită de cea prevăzută.
- Urmărind câștiguri mici. Îndreptați-vă spre acțiunea cea mai scumpă, mai degrabă decât îmbunătățirea cu 1%.
- Ignorarea costului bateriei funcțiilor AI. Modelul/camera/rețea care rulează constant consumă bateria.
- Obosesc firul principal. Greutatea de pornire și derulare nu ar trebui să fie în firul UI.
- Nu se măsoară din nou după optimizare. Verificați dacă îmbunătățirea este reală și nu rupe nimic.
- Măsurarea performanței în emulator. Viteza reală a dispozitivului, temperatura și bateria sunt complet diferite.
Pe scurt
Performanța și bateria sunt o chestiune de supraviețuire a aplicației mobile. Regula de aur: măsurați mai întâi, optimizați mai târziu. Oferirea datelor de profil către AI accelerează interpretarea; Dorința incomensurabilă de a „accelera” duce la ghiciri oarbe. Țintește-te spre cea mai scumpă tranzacție, nu urmărește profituri mici. Capacitățile AI adăugate în acest modul sunt puternice, dar suportă costuri pentru baterie și procesor; Gestionați acest cost prin reducerea frecvenței de eșantionare, a loturilor și a rulării numai atunci când este necesar. Măsurați din nou pe dispozitivul real după fiecare optimizare.
Sarcina de aplicare
Importați un profil într-o aplicație (propriul dvs. proiect sau exemplu) sau creați un eșantion de ieșire de profil și lăsați-l interpretat de AI cu „Șablonul de analiză a blocajului”. Aplicați cea mai mare optimizare a impactului și măsurați din nou: a scăzut efectiv numărul? De asemenea, evaluați o funcție AI pe care ați adăugat-o în acest modul (model pe dispozitiv sau apel în cloud) în ceea ce privește bateria cu „Șablonul de cost al funcției AI” și determinați cel puțin o setare pentru baterie.
lista de verificare
- [ ] Am primit profilul înainte de optimizare, nu am ghicit
- [ ] Am urmărit cel mai scump comerț, nu m-am împrăștiat pe profituri mici
- [ ] Am dat datele profilului AI în numere concrete
- [ ] Am evaluat costul bateriei/procesorului funcțiilor AI
- [ ] Am îndepărtat greutățile din firul principal
- [ ] După optimizare, am măsurat din nou pe dispozitivul real și am verificat regresia