Бірлік 8 / 11

Өнімділік пен батареяны оңтайландыру: жасанды интеллектпен жылдам және тиімді қолданбалар

Табыстар:

  • Алдымен профильді алып, нақты тығырықты өлшей отырып, болжамға емес, деректерге негізделген оңтайландыруды жасаңыз және профильдің нәтижесін жасанды интеллект түсіндіріңіз.
  • Іске қосу уақыты, еркіндік, жад және батарея тұрғысынан ең қымбат операцияны бағыттау және негізгі жіптен ауыр жұмысты алып тастау мүмкіндігі
  • Үлгі алу және пакеттік өңдеу арқылы құрылғыдағы модель және бұлттық қоңыраулар сияқты AI мүмкіндіктерінің батареясы мен процессор құнын басқару мүмкіндігі

Ұялы телефон қолданушылары шыдамсыз. Қолданба баяу ашылса, айналдыру кезінде ілулі тұрса немесе батареяны тез таусатын болса, пайдаланушы оны жояды және дүкенде оған жұлдызды баға береді. Өнімділік пен батареяның тиімділігі мобильді қолданбаның өмір сүруіне байланысты; Бұл пайдаланушының қанағаттанушылығына да, дүкен рейтингіне де тікелей әсер етеді. Жасанды интеллект өнімділік кедергілерін анықтауда, өлшеу нәтижелерін түсіндіруде және оңтайландыруды ұсынуда күшті көмекші болып табылады. Бірақ алтын ереже қалады: алдымен өлшеңіз, кейінірек оңтайландырыңыз. Бұл бөлімде біз AI көмегімен өнімділік пен батарея мәселелерін деректерге негізделген жолмен шешуді үйренеміз. Ерекше маңызды мәселе - батареяға әсер ету және біз алдыңғы блоктарда қосқан AI мүмкіндіктерінің өнімділігін басқару (құрылғыдағы үлгі, бұлттық қоңырау).

Өлшеусіз оңтайландыру

Тәжірибесіз әзірлеушінің ең үлкен қателігі - болжамды оңтайландыру: «бұл баяу болуы керек» деп уақытты жоғалту. Шынайы тығырық әрқашан күтпеген жерде болады. Алдымен профиль алынады (профильдеу — қолданбаның қай бөлігі қанша уақытты/жадты/батареяны тұтынатынын өлшеу). Android Studio Profiler және Xcode Instruments осы жұмысқа арналған. Өлшеу деректерін AI-ға беру интерпретацияны жылдамдатады; Бірақ өлшеусіз, AI-ға «менің қолданбам баяу, оны тездетіңіз» деп айту соқыр болжам жасауды білдіреді.

Өнімділіктің төрт негізгі осі:

ось

симптом

типтік себеп

Басталу уақыты

Қолданба кеш ашылады

Негізгі жіпте ауыр жұмыс

Еркіндік (жанк)

Айналдыру тоқтап қалады

Ұзақ өңдеу, UI ағынындағы қажетсіз қайта сызу

жады

ісіну, коллапс

Ағып кету, үлкен кескін, кэш бақылаусыз

батарея/қызу

жылдам эякуляция

Үздіксіз орналасу, желі, сенсор, фондық жұмыс

Кеңес: AI-дан өнімділік мәселесі туралы сұрағанда, профиль шығысын беріңіз (қай функция қанша уақыт алады, жад графигі). «Бұл функция кадрға 30 мс уақытты алады» сияқты қатты деректер AI-ға нақты тығырықтан шығуға назар аударуға мүмкіндік береді; «Баяу» сияқты субъективті сөз тіркесі жалпы және пайдасыз жауап береді.

AI мүмкіндіктерінің батарея құны

Бұл модульге біз қосқан AI мүмкіндіктері күшті, бірақ олар тегін емес. Құрылғыдағы үлгіні шығарып алу процессор мен батареяны шаршатады; Үздіксіз жұмыс істейтін кескінді тану (мысалы, камераның әрбір кадрды өңдеуі) телефонды қыздырып, батареяны бірнеше минут ішінде тауысады. Бұлтты AI қоңыраулары, керісінше, желілік радионы (деректерді жіберетін және қабылдайтын антенна) үнемі қосулы ұстау арқылы батареяны жейді. Шешімдер: құрылғыдағы үлгіні қажет болғанда ғана іске қосыңыз, камераны әр кадрдың орнына секундына бірнеше рет сынап алыңыз, бұлт сұрауларын пакеттік жіберіңіз, құрылғы зарядталып немесе жұмыс істемей тұрғанда ауыр жүкті көтеріңіз.

Абайлаңыз: Үздіксіз жұмыс істейтін AI мүмкіндігі (тікелей аударма, үздіксіз нысанды тану) батареяны өте тез бітіріп, құрылғыны қыздырып, жүйе оны сөндіруі мүмкін. Пайдаланушыға бұл баға жойылғанын сездіретін мүмкіндік. Мен әрқашан AI-дан «бұл мүмкіндікті батареяға қалай ыңғайлы етуге болады?» деп сұраймын. Сондай-ақ сұрақ қойыңыз.

Оңтайландыру қадамдары

  1. Өлшеу. Profiler көмегімен нақты тығырықты табыңыз; болжамаңыз.
  2. Ең үлкен мәселені таңдаңыз. 1% жақсартуды қудаламаңыз; Ең қымбат транзакцияны мақсат етіңіз.
  3. Деректермен AI сұраңыз. Профиль шығысы + сәйкес кодпен оңтайландыру ұсынысын сұраңыз.
  4. Қолданыңыз және қайтадан өлшеңіз. Жақсарту шынайы ма? Нөмір төмендеді ме?
  5. Регрессиялық бақылау. Оңтайландыру ештеңені бұзды ма? Көрнекі және функционалдық тестілеуді қайталаңыз.

үш шағын іс

1-жағдай - дұрыс емес жерден іздеу. Бір команда тізімдер кептеліп қалды деп ойлады және бірнеше апта бойы айналдыру кодын қайта өңдеді. Олар профильді алып, деректерді AI-ға бергенде, нақты қиыншылық желі арқылы әр жолмен қайта жүктелетін кескіндер екені белгілі болды. Көрнекі кэш қосылған кезде, еркіндік 42 FPS-тен 60 FPS-ке дейін өсті. Сабақ: өлшеу апталық бос күш-жігерден аулақ болады.

2-жағдай — Батареяның құбыжық мүмкіндігі. Аударма қолданбасы камерамен тікелей мәтінді аударуды қосты; Қолданушылар «телефон 15 минутта қызып, батареясының 30 пайызы бітті» деп шағымданған. Жасанды интеллектпен кеңескен кезде камера секундына 30 кадрды өңдейтіні анықталды; Бұл 5 кадрға дейін азайып, нәтиже бір-бірінен бірнеше кадрға жаңартылғанда, батареяны тұтыну үштен біріне дейін азайып, сапасы байқалмады. Сабақ: AI-ны әрқашан батарея көзімен орнатыңыз.

3-жағдай – баяу басталуы. Қолданба 4,5 секундта ашылды; Пайдаланушылардың 20% іске қосу кезінде шығып жатты. Профиль барлық бастапқы жұмыстардың (аналитика, деректерді жүктеу, үлгіні дайындау) негізгі ағында дәйекті түрде орындалғанын көрсетті. AI ұсынысымен олар кейінге қалдырылды және артқы жағына қойылды; Ашылу уақыты 1,3 секундқа дейін қысқарды, ал бас тарту жылдамдығы екі есе азайды. Сабақ: басында тек маңызды жұмыстарды орындаңыз.

Әлсіз шақыру / Күшті шақыру

Әлсіз нұсқау: «Менің қолданбам баяу, оны тездетіңіз».

Күшті шақыру: "Тізімді айналдыру менің Android қолданбамда тұрып қалды (жанк). Профиль жасаушы деректері: bindImageView әр кадрға 28 мс уақыт алады, кескіндер желіден әр жолы жүктеледі, кэш жоқ. Қатысты код: [RecyclerView адаптер коды]. Әсер ету реті бойынша ең тиімді 3 оңтайландыруды ұсыныңыз. Күтілетін пайда мен ықтимал жанама әсерлердің әрқайсысын төмендетпейтінін көрсетіңіз. сапасы».

Көшіретін үлгілер

Қиындықтарды талдау үлгісі: "Келесі профиль деректерін түсіндіріп, ең қымбат 3 операцияны табыңыз: [профилді шығару]. Әрқайсысы үшін ықтимал себеп пен нақты оңтайландыруды ұсыныңыз. Алдымен ең жоғары әсерді көрсетіңіз."

Батареяны оңтайландыру үлгісі:"Бұл мүмкіндік батареяны тез зарядтайды: [мүмкіндік, мысалы, тұрақты орын]. Оны батареяға ыңғайлы етіңіз:- Үлгі алу жиілігін азайтыңыз- Фондағы шектеу- Пакеттік өңдеу- Қажет болғанда ғана іске қосыңыз Шешімдерді пайдаланушы тәжірибесін бұзбай сұрыптаңыз. [код]"

Іске қосуды жылдамдату үлгісі: "Қолданбаны іске қосуды жылдамдату. Іске қосу кезінде орындалатын әрекеттер: [тізім]. Қайсысын кейінге қалдыруға, фонға түсіруге немесе жалқау жүктеуге болады? Маңыздыларын бөліңіз. [код]"

AI мүмкіндігінің құны үлгісі: "Мен қосқан [құрылғыдағы модель/бұлттық қоңырау] мүмкіндігінің өнімділігі мен батарея құнын бағалаңыз. Өлшеу керек көрсеткіштерді және құнын төмендету стратегияларын тізіңіз. [код]"

Жалпы қателер

  • Өлшеусіз оңтайландыру. Шынайы тығырық көбінесе болжанғаннан басқа жерде болады.
  • Кішігірім табыстарға жету. 1% жақсартуға емес, ең қымбат әрекетке ұмтылыңыз.
  • AI мүмкіндіктерінің батарея құнын елемеу. Үздіксіз жұмыс істейтін модель/камера/желі батареяны жейді.
  • Негізгі жіпті шаршатады. Бастау және айналдыру кезінде ауыр көтеру UI ағынында болмауы керек.
  • Оңтайландырудан кейін қайта өлшеу жүргізілмейді. Жақсартудың нақты екенін және ештеңені бұзбайтынын тексеріңіз.
  • Эмулятордағы өнімділікті өлшеу. Құрылғының нақты жылдамдығы, температурасы және батареясы мүлдем басқа.

Қысқаша айтқанда

Өнімділік пен батарея - бұл мобильді қолданбаның сақталуы мәселесі. Алтын ереже: алдымен өлшеңіз, кейін оңтайландырыңыз. AI-ге профильдік деректерді беру интерпретацияны жылдамдатады; «Жылдамдатуға» деген өлшеусіз ұмтылыс соқыр болжамдарға әкеледі. Ең қымбат транзакцияға ұмтылыңыз, аз пайданың артынан қумаңыз. Бұл модульге қосылған AI мүмкіндіктері күшті, бірақ батарея мен процессордың құнын көтереді; Бұл шығынды іріктеу жиілігін азайту, топтастыру және қажет болғанда ғана іске қосу арқылы басқарыңыз. Әрбір оңтайландырудан кейін нақты құрылғыда қайта өлшеңіз.

Қолданбалы тапсырма

Қолданбаға профильді импорттаңыз (жеке жобаңыз немесе мысал) немесе үлгілік профиль шығысын жасаңыз және оны AI «Тұйықталу талдау үлгісімен» түсіндіріңіз. Ең жоғары әсерді оңтайландыруды қолданып, қайта өлшеңіз: сан шынымен төмендеді ме? Сондай-ақ, осы модульге қосқан AI мүмкіндігін (құрылғыдағы үлгі немесе бұлттық қоңырау) «AI мүмкіндігі құны үлгісімен» батарея тұрғысынан бағалаңыз және кем дегенде бір батареяға қолайлы параметрді анықтаңыз.

бақылау парағы

  • [ ] Мен профильді оңтайландырудан бұрын алдым, мен ойламадым
  • [ ] Ең қымбат сауданы мақсат еттім, Аз пайдаға шашпадым
  • [ ] Мен AI профилінің деректерін нақты сандармен бердім
  • [ ] Мен AI мүмкіндіктерінің батарея/процессор құнын бағаладым
  • [ ] Мен негізгі жіптен ауыр жүкті алып тастадым
  • [ ] Оңтайландырудан кейін мен нақты құрылғыда қайтадан өлшеп, регрессияны тексердім