Ieguvumi:
- Vispirms izveidojot profilu un izmērot īsto vājo vietu, optimizējot, pamatojoties uz datiem, nevis minējumiem un profila izvadi interpretējot mākslīgajam intelektam.
- Spēja atlasīt visdārgāko darbību palaišanas laika, plūstamības, atmiņas un akumulatora ziņā un noņemt smago darbu no galvenā pavediena
- Iespēja pārvaldīt AI iespēju, piemēram, ierīces modeļa un mākoņa zvanu, akumulatora un procesora izmaksas, izmantojot paraugu ņemšanu un pakešu apstrādi
Mobilie lietotāji ir nepacietīgi. Ja lietotne tiek atvērta lēni, uzkaras ritināšanas laikā vai ātri izlādējas akumulators, lietotājs to izdzēš un veikalā piešķir tai zvaigznīti. Veiktspēja un akumulatora efektivitāte ir mobilās lietotnes izdzīvošanas jautājums; Tas tieši ietekmē gan lietotāju apmierinātību, gan veikala rangu. AI ir spēcīgs palīglīdzeklis, lai atklātu veiktspējas vājās vietas (šaurās vietas), interpretētu mērījumu rezultātus un ieteiktu optimizācijas. Bet zelta likums paliek spēkā: vispirms izmēriet, vēlāk optimizējiet. Šajā nodaļā mēs iemācīsimies atrisināt veiktspējas un akumulatora problēmas uz datiem balstītā veidā, izmantojot AI. Īpaši svarīga problēma ir pārvaldīt iepriekšējās vienībās pievienoto AI iespēju ietekmi uz akumulatoru un veiktspēju (ierīces modelis, mākoņa zvani).
Optimizēšana bez mērīšanas
Nepieredzējuša izstrādātāja lielākā kļūda ir paredzamā optimizācija: tērēt laiku, sakot "šim jābūt lēnam". Īstais sašaurinājums gandrīz vienmēr atrodas negaidītā vietā. Tātad vispirms tiek uzņemts profils (profilēšana — mērīšana, kura lietojumprogrammas daļa patērē, cik daudz laika/atmiņas/akumulatora). Android Studio Profiler un Xcode Instruments ir paredzēti šim darbam. Mērījumu datu nodošana AI paātrina interpretāciju; Bet bez mērījumiem AI paziņojums "mana lietojumprogramma ir lēna, paātriniet to" nozīmē akli izteikt prognozes.
Četras galvenās darbības asis ir:
ass
simptoms
tipisks cēlonis
Sākuma laiks
Pieteikums tiek atvērts vēlu
Smags darbs pie galvenā pavediena
Brīvība (jank)
Ritināšana iestrēgst
Ilga apstrāde, nevajadzīga pārzīmēšana lietotāja interfeisa pavedienā
atmiņa
pietūkums, sabrukums
Noplūde, liels attēls, kešatmiņa nekontrolēta
akumulators/siltums
ātra ejakulācija
Nepārtraukts atrašanās vietas, tīkla, sensora, fona darbs
Padoms. Jautājot mākslīgajam intelektam par veiktspējas problēmu, norādiet profila izvadi (kurai funkcijai nepieciešams, cik ilgu laiku, atmiņas diagramma). Cietie dati, piemēram, “Šī funkcija aizņem 30 ms vienā kadrā”, ļauj AI koncentrēties uz īsto vājo vietu; Subjektīva frāze, piemēram, "lēni", rada vispārīgu un bezjēdzīgu atbildi.
AI spēju akumulatora izmaksas
AI funkcijas, ko pievienojām šim modulim, ir jaudīgas, taču tās nav bezmaksas. Ierīcē esošā modeļa izvilkšana noslogo procesoru un akumulatoru; Pastāvīgi darbojoša attēla atpazīšana (piemēram, kamera apstrādā katru kadru) uzsildīs tālruni un izlādēs akumulatoru dažu minūšu laikā. No otras puses, mākoņa AI zvani patērē akumulatoru, jo tīkla radio (antena, kas sūta un saņem datus) visu laiku ir ieslēgta. Risinājumi: palaidiet ierīcē iebūvēto modeli tikai tad, kad tas ir nepieciešams, izlasiet kameru dažas reizes sekundē, nevis katru kadru, sūtiet mākoņa pieprasījumus, veiciet smagu darbu, kamēr ierīce tiek uzlādēta vai dīkstāvē.
Uzmanību! Pastāvīgi darbojoša mākslīgā intelekta funkcija (tiešraide, nepārtraukta objektu atpazīšana) var ļoti ātri izlādēt akumulatoru, uzkarst ierīci un sistēma to var aizkavēt. Funkcija, kas liek lietotājam justies, ka šī maksa ir dzēsta. Es vienmēr jautāju AI "kā padarīt šo funkciju draudzīgu akumulatoram?" Uzdodiet arī jautājumu.
Optimizācijas soļi
- Pasākums. Atrodiet īsto sašaurinājumu ar Profiler; nedomāju.
- Izvēlieties lielāko problēmu. Nevajag dzīties pēc 1% uzlabojuma; Tiecieties uz visdārgāko darījumu.
- Jautājiet AI ar datiem. Pieprasīt optimizācijas ieteikumu ar profila izvadi + atbilstošu kodu.
- Uzklājiet un mēriet vēlreiz. Vai uzlabojums ir reāls? Vai cipars ir samazinājies?
- Regresijas kontrole. Vai optimizācija kaut ko sabojāja? Atkārtojiet vizuālo un funkcionālo pārbaudi.
trīs mini futrāļi
1. gadījums — meklēšana nepareizā vietā. Viena komanda uzskatīja, ka saraksti ir iestrēguši, un vairākas nedēļas bez rezultātiem pārstrādāja ritināšanas kodu. Kad viņi paņēma profilētāju un ievadīja datus AI, izrādījās, ka īstā vājā vieta bija attēli, kas katrā rindā tika atkārtoti ielādēti tīklā. Kad tika pievienota vizuālā kešatmiņa, plūstamība palielinājās no 42 FPS līdz 60 FPS. Mācība: mērījumi ļauj izvairīties no nedēļu veltām pūlēm.
2. gadījums — akumulatora briesmoņa funkcija. Tulkošanas lietotne pievienoja teksta tiešraidi ar kameru; Lietotāji sūdzējās, ka "tālrunis uzkarsa 15 minūtēs un 30% no akumulatora bija pazuduši." Kad tika apspriests AI, tika konstatēts, ka kamera apstrādā 30 kadrus sekundē; Kad tas tika samazināts līdz 5 kadriem un rezultāts tika atjaunināts ar dažiem kadriem, akumulatora patēriņš samazinājās līdz trešdaļai, un kvalitāte nebija pamanāma. Nodarbība: Vienmēr iestatiet AI ar akumulatora cilpu.
3. gadījums — lēns sākums. Lietotne tika atvērta 4,5 sekundēs; 20% lietotāju izgāja startēšanas laikā. Profils parādīja, ka viss sākotnējais darbs (analītika, datu ielāde, modeļa sagatavošana) tika veikts secīgi galvenajā pavedienā. Saskaņā ar AI priekšlikumu tie ir atlikti un atcelti; Atvēršanas laiks tika samazināts līdz 1,3 sekundēm, un atteikšanās rādītājs tika samazināts uz pusi. Nodarbība: sākumā veiciet tikai būtiskus darbus.
Vāja uzvedne / spēcīga uzvedne
Vāja uzvedne: "Mana lietotne ir lēna, paātriniet to."
Spēcīga uzvedne: "Saraksta ritināšana iestrēgst (jank) manā Android lietojumprogrammā. Profilēšanas dati: bindImageView katrā kadrā aizņem 28 ms, attēli tiek ielādēti no tīkla katru reizi, nav kešatmiņas. Saistītais kods: [RecyclerView adaptera kods]. Iesakiet 3 visefektīvākās optimizācijas ietekmes secībā. Norādiet katra attēla kvalitātes uzlabošanos, nevis iespējamos blakusefektus."
Kopējamas veidnes
Sašaurinājuma vietas analīzes veidne: "Interpretējiet tālāk norādītos profila datus un atrodiet 3 visdārgākās darbības: [profiliera izvade]. Iesakiet katrai iespējai cēloni un konkrētu optimizāciju. Vispirms sniedziet vislielāko ietekmi."
Akumulatora optimizācijas veidne: "Šī funkcija ātri izlādē akumulatoru: [funkcija, piemēram, pastāvīga atrašanās vieta]. Padariet to draudzīgu akumulatoram: - Samaziniet paraugu ņemšanas biežumu - Ierobežojumu fonā - Pakešu apstrādi - Palaidiet tikai nepieciešamības gadījumā Kārtojiet risinājumus, netraucējot lietotāja pieredzi. [kods]."
Startēšanas paātrināšanas veidne: "Paātrināt lietojumprogrammas startēšanu. Darbības, kas pašlaik tiek veiktas startēšanas laikā: [saraksts]. Kuras var atlikt, izmantot fonā vai ielādēt slinki? Atdaliet svarīgākās. [kods]."
AI funkcijas izmaksu veidne: "Novērtējiet manis pievienotās funkcijas [ierīces modelis/mākoņa zvans] veiktspēju un akumulatora izmaksas. Norādiet rādītājus, kas man būtu jāizmēra, un stratēģijas izmaksu samazināšanai. [kods]."
Biežas kļūdas
- Optimizēšana bez mērīšanas. Patiesais sašaurinājums bieži atrodas citā vietā, nekā paredzēts.
- Dzenoties pēc maziem ieguvumiem. Mērķējiet uz visdārgāko darbību, nevis uz 1% uzlabojumu.
- AI funkciju akumulatora izmaksu ignorēšana. Pastāvīgi darbojas modelis/kamera/tīkls patērē akumulatoru.
- Nogurst galvenais pavediens. Smagai celšanai, sākot un ritinot, nevajadzētu būt lietotāja saskarnes pavedienam.
- Pēc optimizācijas netiek atkārtoti mērīti. Pārbaudiet, vai uzlabojumi ir patiesi un neko nesabojā.
- Veiktspējas mērīšana emulatorā. Faktiskais ierīces ātrums, temperatūra un akumulators ir pilnīgi atšķirīgi.
Rezumējot
Veiktspēja un akumulators ir mobilo lietotņu izdzīvošanas jautājums. Zelta likums: vispirms izmēriet, vēlāk optimizējiet. Profila datu nodošana AI paātrina interpretāciju; Neizmērojamā vēlme "paātrināt" noved pie akliem minējumiem. Tiecies pēc dārgākā darījuma, netiecies pēc nelielas peļņas. Šajā modulī pievienotās mākslīgā intelekta iespējas ir jaudīgas, taču tām ir jāmaksā par akumulatoru un procesoru; Pārvaldiet šīs izmaksas, samazinot paraugu ņemšanas biežumu, grupēšanu un palaižot tikai tad, kad tas ir nepieciešams. Pēc katras optimizācijas veiciet mērījumus vēlreiz reālajā ierīcē.
Lietojumprogrammas uzdevums
Importējiet profilu lietojumprogrammā (savā projektā vai piemērā) vai izveidojiet profila izvades paraugu un ļaujiet to interpretēt AI, izmantojot “Sašaurinājuma vietas analīzes veidni”. Izmantojiet vislielākās ietekmes optimizāciju un vēlreiz novērtējiet: vai skaitlis patiešām samazinājās? Novērtējiet arī šajā modulī pievienoto AI funkciju (ierīces modeli vai mākoņa zvanu) akumulatora jaudas ziņā, izmantojot “AI funkcijas izmaksu veidni” un nosakiet vismaz vienu akumulatoram draudzīgu iestatījumu.
kontrolsaraksts
- [ ] Es ieguvu profilu pirms optimizācijas, es neuzminēju
- [ ] Es mērķēju uz dārgāko tirdzniecību, nekaisīju uz mazām naudām
- [ ] Es norādīju AI profila datus konkrētos skaitļos
- [ ] Es novērtēju AI funkciju akumulatora/procesora izmaksas
- [ ] Es noņēmu smago celšanu no galvenā pavediena
- [ ] Pēc optimizācijas es vēlreiz mērīju reālajā ierīcē un pārbaudīju regresiju