Nyereség:
- Először készítsen egy profilt és mérje meg a valós szűk keresztmetszetet, az optimalizálást adatokon, nem pedig találgatásokon alapul, és a profil kimenetét mesterséges intelligencia értelmezi.
- Az indítási idő, a folyékonyság, a memória és az akkumulátor tekintetében a legdrágább műveletek megcélzása, valamint a nehéz munka eltávolítása a főszálról
- Képes kezelni az AI-képességek akkumulátor- és processzorköltségét, például az eszközön belüli modellt és a felhőhívást mintavételezéssel és kötegelt feldolgozással
A mobilhasználók türelmetlenek. Ha az alkalmazás lassan nyílik meg, görgetés közben lefagy, vagy gyorsan lemeríti az akkumulátort, akkor a felhasználó törli, és csillaggal értékeli az áruházban. A teljesítmény és az akkumulátor hatékonysága a mobilalkalmazások túlélésének kérdése; Közvetlenül befolyásolja mind a felhasználói elégedettséget, mind a boltok rangsorát. Az AI hatékony segítség a teljesítmény szűk keresztmetszetek (szűk keresztmetszetek) felderítésében, a mérési eredmények értelmezésében és az optimalizálás ajánlásában. De az aranyszabály továbbra is érvényes: előbb mérj, utána optimalizálj. Ebben az egységben megtanuljuk a teljesítmény- és akkumulátorproblémák adatalapú megoldását mesterséges intelligencia segítségével. Különösen fontos probléma a korábbi egységekben hozzáadott mesterséges intelligencia-képességek akkumulátorra és teljesítményére gyakorolt hatásának kezelése (eszközön belüli modell, felhőhívás).
Optimalizálás mérés nélkül
A tapasztalatlan fejlesztő legnagyobb hibája a prediktív optimalizálás: időt vesztegetni azzal, hogy "eznek lassúnak kell lennie". Az igazi szűk keresztmetszet szinte mindig váratlan helyen van. Tehát először a profil készül (profilozás – annak mérése, hogy az alkalmazás melyik része mennyi időt/memóriát/akkumulátort fogyaszt). Az Android Studio Profiler és az Xcode Instruments erre a munkára való. A mérési adatok AI-nak való átadása felgyorsítja az értelmezést; De mérés nélkül, ha azt mondjuk AI-nak, hogy „az alkalmazásom lassú, gyorsítsd fel” azt jelenti, hogy vakon jóslatokat készítünk.
A teljesítmény négy fő tengelye a következő:
tengely
tünet
tipikus ok
Kezdés időpontja
A jelentkezés későn nyílik meg
Nehéz munka a főszálon
Folyékonyság (jank)
A tekercs elakad
Hosszú feldolgozás, szükségtelen újrarajzolás a felhasználói felületen
memória
duzzanat, összeomlás
Szivárgás, nagy kép, a gyorsítótár ellenőrizetlen
akkumulátor/fűtés
gyors magömlés
Folyamatos helymeghatározás, hálózat, érzékelő, háttérmunka
Tipp: Ha teljesítményproblémáról kérdezi az AI-t, adja meg a profil kimenetét (melyik függvény mennyi ideig tart, memóriagrafikon). Az olyan kemény adatok, mint a „Ez a funkció 30 ms-ot vesz igénybe képkockánként”, lehetővé teszik az AI számára, hogy a valódi szűk keresztmetszetre összpontosítson; Egy olyan szubjektív kifejezés, mint a „lassú”, általános és haszontalan választ ad.
Az AI képességek akkumulátorköltsége
Az ebben a modulban hozzáadott mesterséges intelligencia funkciók erőteljesek, de nem ingyenesek. Az eszközön lévő modell kibontása megterheli a processzort és az akkumulátort; A folyamatosan futó képfelismerés (pl. a kamera minden képkockát feldolgoz) perceken belül felmelegíti a telefont és lemeríti az akkumulátort. A Cloud AI-hívások viszont lemerítik az akkumulátort azáltal, hogy a hálózati rádiót (az adatokat küldő és fogadó antennát) folyamatosan bekapcsolva tartják. Megoldások: csak szükség esetén futtassa az eszközön lévő modellt, minden képkocka helyett másodpercenként néhányszor mintát vegyen a kamerából, felhőkérések kötegelt küldése, töltés közben vagy üresjáratban végezze el a nehéz terheket.
Figyelem: A folyamatosan futó mesterséges intelligencia funkció (élő fordítás, folyamatos objektumfelismerés) nagyon gyorsan lemerítheti az akkumulátort, felmelegítheti az eszközt, és a rendszer lefojthatja. Olyan funkció, amely miatt a felhasználó úgy érzi, hogy ez a költség törlődik. Mindig megkérdezem az AI-t, hogy "hogyan tehetem ezt a funkciót akkumulátorbaráttá?" Tedd fel a kérdést is.
Az optimalizálás lépései
- Mérje meg. Találja meg az igazi szűk keresztmetszetet a Profilerrel; ne tippelj.
- Válassza ki a legnagyobb problémát. Ne hajszoljon 1%-os javulást; Törekedjen a legdrágább tranzakcióra.
- Kérdezze meg az AI-t az adatokkal. Kérjen optimalizálási javaslatot profilkimenettel + releváns kóddal.
- Alkalmazza és mérje meg újra. Valós a javulás? Leesett a szám?
- Regressziós kontroll. Eltört valamit az optimalizálás? Ismételje meg a vizuális és funkcionális tesztelést.
három mini tok
1. eset – Rossz helyen végzett keresés. Az egyik csapat úgy gondolta, hogy a listák elakadtak, és hetekig átdolgozták a görgetőkódot, hiába. Amikor átvették a profilkészítőt és betáplálták az adatokat az MI-be, kiderült, hogy az igazi szűk keresztmetszet a hálózaton keresztül minden sorral újratöltött képek jelentik. A vizuális gyorsítótár hozzáadásával a folyékonyság 42 FPS-ről 60 FPS-re nőtt. Tanulság: a mérés elkerüli a hetekig tartó hiábavaló erőfeszítéseket.
2. eset – Akkumulátor szörny funkció. Egy fordítóalkalmazás hozzáadott élő szövegfordítást kamerával; A felhasználók panaszkodtak, hogy "a telefon 15 perc alatt felmelegedett, és az akkumulátor 30%-a lemerült". Amikor az MI-vel konzultáltak, a kamera másodpercenként 30 képkockát dolgozott fel; Amikor ezt 5 képkockára csökkentették, és az eredményt néhány képkocka különbséggel frissítették, az akkumulátorfogyasztás harmadára csökkent, a minőség pedig nem volt észrevehető. Tanulság: Az AI-t mindig az akkumulátorszemmel állítsa be.
3. eset – Lassú kezdés. Egy alkalmazás 4,5 másodperc alatt megnyílt; A felhasználók 20%-a kilépett az indításkor. A profil azt mutatta, hogy minden kezdeti munka (analitika, adatbetöltés, modell-előkészítés) szekvenciálisan történt a főszálon. Az AI-javaslattal ezeket elhalasztották és háttérbe szorították; A nyitási idő 1,3 másodpercre csökkent, az elhagyási arány pedig felére csökkent. Tanulság: kezdetben csak a lényeges munkát végezze el.
Gyenge felszólítás / Erős felszólítás
Gyenge felszólítás: "Az alkalmazásom lassú, gyorsítsa fel."
Hatékony prompt: "A lista görgetése elakad (jank) az Android-alkalmazásomban. Profilkészítő adatok: bindImageView 28 ms-ot vesz igénybe minden képkocka, a képek minden alkalommal betöltődnek a hálózatról, nincs gyorsítótár. Kapcsolódó kód: [RecyclerView adapter kód]. Javasolja a 3 leghatékonyabb optimalizálást hatások sorrendjében. Csökkentse a várható képminőséget, és ne csökkentse a lehetséges mellékhatásokat."
Másolható sablonok
Szűk keresztmetszet-elemző sablon: "Értelmezze a következő profiladatokat, és keresse meg a 3 legdrágább műveletet: [profilozó kimenet]. Javasoljon mindegyik lehetséges okát és konkrét optimalizálását. Először adja meg a legnagyobb hatást."
Akkumulátor-optimalizálási sablon: "Ez a funkció gyorsan lemeríti az akkumulátort: [funkció, például állandó hely]. Legyen akkumulátorbarát: - Csökkentse a mintavételi gyakoriságot - Korlátozás a háttérben - Kötegelt feldolgozás - Csak akkor futtassa, ha szükséges. A megoldások rendezése a felhasználói élmény megzavarása nélkül. [kód]"
Indítási gyorsítósablon: "Fel kell gyorsítani az alkalmazás indítását. Jelenleg az indításkor végzett dolgok: [lista]. Melyiket lehet elhalasztani, háttérbe állítani vagy lustán betölteni? A lényegeseket különítse el. [kód]"
AI funkció költségsablonja: "Értékelje ki az általam hozzáadott [eszközön található modell / felhőhívás] funkció teljesítményét és akkumulátorköltségét. Sorolja fel a mérendő mutatókat és a költségcsökkentési stratégiákat. [kód]."
Gyakori hibák
- Optimalizálás mérés nélkül. Az igazi szűk keresztmetszet gyakran a várttól eltérő helyen van.
- Kis nyereség hajszolása. Az 1%-os javulás helyett a legdrágább akciót célozza meg.
- Az AI-funkciók akkumulátorköltségének figyelmen kívül hagyása. A folyamatosan futó modell/kamera/hálózat felemészti az akkumulátort.
- Fárasztja a főszálat. Az indítás és a görgetés nehéz emelése nem lehet az UI szálon.
- Optimalizálás után nincs újramérés. Győződjön meg arról, hogy a javulás valódi, és nem tör el semmit.
- A teljesítmény mérése az emulátorban. Az eszköz tényleges sebessége, hőmérséklete és akkumulátora teljesen más.
Összefoglalva
A teljesítmény és az akkumulátor a mobilalkalmazások túlélésének kérdése. Az aranyszabály: előbb mérj, utána optimalizálj. A profiladatok megadása az AI-nak felgyorsítja az értelmezést; A „gyorsítás” mérhetetlen vágya vak találgatásokhoz vezet. Törekedjen a legdrágább tranzakcióra, ne hajszoljon kis haszonra. Az ebben a modulban hozzáadott mesterséges intelligencia-képességek nagy teljesítményűek, de akkumulátor- és processzorköltségekkel járnak; Kezelje ezt a költséget a mintavételezési gyakoriság csökkentésével, a kötegelésekkel és csak akkor, ha szükséges. Minden optimalizálás után végezzen mérést a valódi eszközön.
Pályázati feladat
Importáljon egy profilt egy alkalmazásban (saját projektben vagy példában), vagy hozzon létre egy mintaprofil kimenetet, és értelmezze az AI-val a "Szűk keresztmetszet-elemző sablonnal". Alkalmazza a legnagyobb hatásoptimalizálást, és mérje meg újra: valóban csökkent a szám? Ezenkívül értékelje az ebben a modulban hozzáadott mesterséges intelligencia-funkciót (eszközön lévő modell vagy felhőhívás) az akkumulátor töltöttsége szempontjából az „AI szolgáltatás költségsablonja” segítségével, és határozzon meg legalább egy akkumulátorbarát beállítást.
ellenőrző lista
- [ ] Az optimalizálás előtt kaptam profilt, nem tippeltem
- [ ] A legdrágább kereskedésre törekedtem, nem szórtam rá a kis haszonra
- [ ] Az AI profil adatait konkrét számokban adtam meg
- [ ] Felmértem az AI-funkciók akkumulátor/processzor költségét
- [ ] Eltávolítottam a nehézemelést a főszálról
- [ ] Optimalizálás után újra mértem a valós eszközön és ellenőriztem a regressziót