Jednotka 8 / 11

Optimalizace výkonu a baterie: Rychlé a efektivní aplikace s umělou inteligencí

zisky:

  • Tím, že nejprve vezmete profil a změříte skutečné úzké místo, provedete optimalizaci založenou spíše na datech než na odhadech a necháte výstup profilu interpretovat umělou inteligencí.
  • Schopnost zaměřit se na nejdražší operace, pokud jde o dobu spouštění, plynulost, paměť a baterii, a odstranit těžkou práci z hlavního vlákna
  • Schopnost řídit náklady na baterii a procesor u funkcí AI, jako je model na zařízení a cloudové volání prostřednictvím vzorkování a dávkového zpracování

Uživatelé mobilních zařízení jsou netrpěliví. Pokud se aplikace otevírá pomalu, zasekává se při posouvání nebo rychle vybíjí baterii, uživatel ji smaže a v obchodě ji ohodnotí hvězdičkami. Výkon a účinnost baterie jsou otázkou přežití mobilní aplikace; Přímo ovlivňuje jak spokojenost uživatelů, tak hodnocení obchodu. Umělá inteligence je mocným pomocníkem při odhalování úzkých míst výkonu (úzká místa), interpretaci výsledků měření a doporučování optimalizací. Zlaté pravidlo ale zůstává: nejdříve měřte, později optimalizujte. V této jednotce se naučíme řešit problémy s výkonem a baterií datově pomocí AI. Zvláště důležitou otázkou je řízení dopadu na baterii a výkon schopností AI, které jsme přidali v předchozích jednotkách (model na zařízení, cloudové volání).

Optimalizace bez měření

Největší chybou nezkušeného vývojáře je prediktivní optimalizace: ztrácet čas tím, že „tohle musí být pomalé“. Skutečné úzké hrdlo je téměř vždy na nečekaném místě. Nejprve se tedy vezme profil (profilování — měření, která část aplikace spotřebovává kolik času/paměti/baterie). Android Studio Profiler a Xcode Instruments jsou pro tuto práci. Poskytování naměřených dat AI urychluje interpretaci; Ale bez měření říct AI „moje aplikace je pomalá, zrychli ji“ znamená slepě předpovídat.

Čtyři hlavní osy výkonu jsou:

osa

symptom

typická příčina

Čas zahájení

Aplikace se otevře pozdě

Těžká práce na hlavním vláknu

plynulost (jank)

Scroll se zasekne

Dlouhé zpracování, zbytečné překreslování ve vláknu uživatelského rozhraní

paměť

otok, kolaps

Únik, velký obraz, nekontrolovaná mezipaměť

baterie/teplo

rychlá ejakulace

Nepřetržité umístění, síť, senzor, úloha na pozadí

Tip: Když se ptáte AI na problém s výkonem, uveďte výstup profilu (která funkce trvá jak dlouho, graf paměti). Tvrdá data jako „Tato funkce trvá 30 ms na snímek“ umožňují AI zaměřit se na skutečné úzké místo; Subjektivní fráze jako „pomalý“ vytváří obecnou a zbytečnou odpověď.

Cena baterie schopností AI

Funkce AI, které jsme přidali do tohoto modulu, jsou výkonné, ale nejsou zdarma. Vyjmutí modelu v zařízení zatěžuje procesor a baterii; Neustále běžící rozpoznávání obrazu (např. kamera zpracovává každý snímek) během několika minut zahřeje telefon a vybije baterii. Na druhou stranu cloudová AI volání spotřebovávají baterii tím, že mají neustále zapnuté síťové rádio (anténa, která odesílá a přijímá data). Řešení: spouštějte model na zařízení pouze v případě potřeby, vzorujte kameru několikrát za sekundu místo každého snímku, hromadně posílejte cloudové požadavky, dělejte těžkou práci, když se zařízení nabíjí nebo je nečinné.

Upozornění: Neustále spuštěná funkce umělé inteligence (živý překlad, nepřetržité rozpoznávání objektů) může velmi rychle vybít baterii, zahřívat zařízení a může být systémem přiškrcen. Funkce, díky které má uživatel pocit, že tato cena je smazána. Vždy se ptám umělé inteligence: „Jak udělám tuto funkci šetrnou k baterii?“ Zeptejte se také.

Kroky optimalizace

  1. Změřte. Najděte skutečné úzké hrdlo s Profilerem; nehádej.
  2. Vyberte největší problém. Nehonit se o 1 % zlepšení; Zaměřte se na nejdražší transakci.
  3. Zeptejte se AI s daty. Vyžádejte si návrh optimalizace s výstupem profilu + relevantní kód.
  4. Naneste a znovu změřte. Je zlepšení skutečné? Spadlo číslo?
  5. Regresní kontrola. Zlomila optimalizace něco? Opakujte vizuální a funkční testování.

tři mini pouzdra

Případ 1 — Hledání na nesprávném místě. Jeden tým si myslel, že seznamy jsou zaseknuté, a přepracovával rolovací kód celé týdny bez úspěchu. Když vzali profiler a předali data AI, ukázalo se, že skutečným úzkým hrdlem byly obrázky, které byly znovu načítány přes síť s každým řádkem. Když byla přidána vizuální mezipaměť, plynulost se zvýšila ze 42 FPS na 60 FPS. Poučení: měření se vyhne týdnům marného úsilí.

Případ 2 — Funkce bateriového monstra. Překladatelská aplikace přidala živý překlad textu s fotoaparátem; Uživatelé si stěžovali, že „telefon se za 15 minut zahřál a 30 % baterie je pryč“. Při konzultaci s AI bylo zjištěno, že kamera zpracovává 30 snímků za sekundu; Když byl tento počet snížen na 5 snímků a výsledek byl aktualizován o několik snímků od sebe, spotřeba baterie klesla na jednu třetinu a kvalita nebyla patrná. Lekce: Vždy nastavujte AI pomocí oka baterie.

Případ 3 – Pomalý nástup. Aplikace se otevírala za 4,5 sekundy; 20 % uživatelů odcházelo při spuštění. Profil ukázal, že veškerá počáteční práce (analytika, načítání dat, příprava modelu) probíhala postupně na hlavním vláknu. S návrhem AI byly tyto odloženy a odsunuty na druhou kolej; Doba otevření byla zkrácena na 1,3 sekundy a míra opuštění byla snížena na polovinu. Ponaučení: na začátku dělejte jen nezbytnou práci.

Slabá výzva / Silná výzva

Slabá výzva: "Moje aplikace je pomalá, zrychlete ji."

Výkonná výzva: "Posouvání seznamu se zasekne (zasekne) v mé aplikaci pro Android. Data profileru: bindImageView trvá 28 ms na každém snímku, obrázky se pokaždé načítají ze sítě, neexistuje žádná mezipaměť. Související kód: [Kód adaptéru RecyclerView]. Doporučte 3 nejúčinnější optimalizace v pořadí dopadu. U každého uveďte očekávaný zisk a možné vedlejší účinky, které nesnižují kvalitu obrázků.

Kopírovatelné šablony

Šablona analýzy úzkého hrdla: "Interpretujte následující data profilu a najděte 3 nejnákladnější operace: [výstup profilu]. Navrhněte možnou příčinu a konkrétní optimalizaci pro každou z nich. Nejprve poskytněte nejvyšší dopad."

Šablona optimalizace baterie:"Tato funkce rychle vybíjí baterii: [funkce, např. trvalé umístění]. Udělejte ji šetrnou k baterii:- Snižte vzorkovací frekvenci- Omezení na pozadí- Dávkové zpracování- Spouštějte pouze v případě potřeby Třídit řešení bez narušení uživatelského dojmu. [kód]“

Šablona pro zrychlení spouštění: "Urychlete spouštění aplikace. Věci, které se aktuálně dělají při spouštění: [seznam]. Které lze odložit, načíst na pozadí nebo líně načíst? Oddělte ty podstatné. [kód]"

Šablona nákladů na funkce umělé inteligence: "Vyhodnoťte výkon a náklady na baterii funkce [model na zařízení / cloudové volání], kterou jsem přidal. Uveďte metriky, které bych měl měřit, a strategie ke snížení nákladů. [kód]"

Časté chyby

  • Optimalizace bez měření. Skutečné úzké hrdlo se často nachází na jiném místě, než se předpokládalo.
  • Honba za malými zisky. Zaměřte se spíše na nejdražší akci než na 1% zlepšení.
  • Ignorování nákladů na baterii funkcí AI. Neustále běžící model/kamera/síť vybíjí baterii.
  • Unavuje hlavní vlákno. Těžké zvedání spouštění a posouvání by nemělo být na vlákně uživatelského rozhraní.
  • Po optimalizaci se nepřeměřuje. Ověřte, že zlepšení je skutečné a nic nezlomí.
  • Měření výkonu v emulátoru. Skutečná rychlost zařízení, teplota a baterie jsou zcela odlišné.

V souhrnu

Výkon a baterie jsou otázkou přežití mobilních aplikací. Zlaté pravidlo: nejdříve měř, později optimalizuj. Poskytování profilových dat AI urychluje interpretaci; Nezměrná touha „zrychlit“ vede ke slepým dohadům. Zaměřte se na nejdražší transakci, nehoňte se za malými zisky. Schopnosti AI přidané v tomto modulu jsou výkonné, ale nesou náklady na baterii a procesor; Spravujte tyto náklady snížením vzorkovací frekvence, dávkování a spouštění pouze v případě potřeby. Po každé optimalizaci znovu změřte na skutečném zařízení.

Aplikační úkol

Importujte profil do aplikace (svůj vlastní projekt nebo příklad) nebo vytvořte vzorový výstup profilu a nechte jej interpretovat AI pomocí „šablony analýzy úzkého místa“. Použijte optimalizaci s nejvyšším dopadem a znovu změřte: skutečně se číslo snížilo? Vyhodnoťte také funkci AI, kterou jste přidali do tohoto modulu (model na zařízení nebo cloudové volání), z hlediska baterie pomocí „šablony nákladů na funkce AI“ a určete alespoň jedno nastavení šetrné k baterii.

kontrolní seznam

  • [ ] Profil jsem dostal před optimalizací, nehádal jsem
  • [ ] Mířil jsem na nejdražší obchod, nerozházel jsem se na malých ziskech
  • [ ] Údaje o profilu AI jsem uvedl v konkrétních číslech
  • [ ] Vyhodnotil jsem cenu baterie/procesoru funkcí AI
  • [ ] Odstranil jsem těžké zvedání z hlavního vlákna
  • [ ] Po optimalizaci jsem znovu změřil na reálném zařízení a zkontroloval regresi