Добици:
- Прво узимање профила и мерење стварног уског грла, оптимизација заснована на подацима, а не нагађањима и тумачење резултата профила од стране вештачке интелигенције
- Могућност циљања најскупље операције у смислу времена покретања, течности, меморије и батерије и уклањања тешког посла са главне нити
- Могућност управљања трошковима батерије и процесора за АИ могућности као што су модел на уређају и позивање у облаку кроз узорковање и групну обраду
Корисници мобилних уређаја су нестрпљиви. Ако се апликација отвара споро, виси током померања или брзо испразни батерију, корисник је брише и даје јој оцену у звездицама у продавници. Перформансе и ефикасност батерије су питање опстанка мобилне апликације; То директно утиче и на задовољство корисника и на рангирање продавнице. АИ је моћна помоћ у откривању уских грла у перформансама (уских грла), тумачењу резултата мерења и препоручивању оптимизација. Али златно правило остаје: прво измерите, а касније оптимизујте. У овој јединици ћемо научити да решавамо проблеме са перформансама и батеријом на начин заснован на подацима помоћу вештачке интелигенције. Посебно важно питање је управљање утицајем на батерију и перформансе АИ могућности које смо додали у претходним јединицама (модел на уређају, позивање у облаку).
Оптимизација без мерења
Највећа грешка неискусног програмера је предиктивна оптимизација: губљење времена говорећи „ово мора бити споро“. Право уско грло је скоро увек на неочекиваном месту. Дакле, прво се узима профил (профилисање — мерење који део апликације троши колико времена/меморије/батерије). Андроид Студио Профилер и Ксцоде Инструментс су за овај посао. Давање мерних података АИ убрзава интерпретацију; Али без мерења, рећи АИ „моја апликација је спора, убрзај“ значи слепо давати предвиђања.
Четири главне осе перформанси су:
осовина
симптом
типичан узрок
Време почетка
Апликација се отвара са закашњењем
Тежак рад на главној нити
течност (јанк)
Скроло се заглави
Дуга обрада, непотребно прецртавање у УИ нити
памћење
оток, колапс
Цурење, велика слика, кеш неконтролисан
батерија / топлота
брза ејакулација
Континуирана локација, мрежа, сензор, посао у позадини
Савет: Када питате АИ о проблему са перформансама, дајте излаз профила (која функција траје колико дуго, графикон меморије). Чврсти подаци попут „Та функција траје 30 мс по кадру“ омогућавају вештачкој интелигенцији да се фокусира на право уско грло; Субјективна фраза као што је "споро" даје генерички и бескорисни одговор.
Цена батерије АИ способности
АИ карактеристике које смо додали у овај модул су моћне, али нису бесплатне. Екстраховање модела на уређају оптерећује процесор и батерију; Препознавање слике које се стално ради (нпр. камера која обрађује сваки кадар) ће загрејати телефон и испразнити батерију у року од неколико минута. Цлоуд АИ позиви, с друге стране, троше батерију држећи мрежни радио (антена која шаље и прима податке) све време укључена. Решења: покрените модел на уређају само када је то потребно, узорковање камере неколико пута у секунди уместо сваког кадра, групно слање захтева у облаку, обављајте тешке послове док се уређај пуни или неактиван.
Опрез: Стално покренута АИ функција (превођење уживо, континуирано препознавање објеката) може врло брзо да испразни батерију, загреје уређај и систем може да је угуши. Функција због које корисник осећа да је овај трошак избрисан. Увек питам АИ "како да учиним да ова функција буде прилагођена батерији?" Такође поставите питање.
Кораци оптимизације
- Мера. Пронађите право уско грло са Профилер-ом; не погађај.
- Изаберите највећи проблем. Не јурите 1% побољшања; Циљајте на најскупљу трансакцију.
- Питајте АИ са подацима. Затражите предлог за оптимизацију са излазом профила + релевантним кодом.
- Нанесите и поново измерите. Да ли је побољшање стварно? Да ли је број пао?
- Контрола регресије. Да ли је оптимизација нешто покварила? Поновите визуелно и функционално тестирање.
три мини кофера
Случај 1 — Претраживање на погрешном месту. Један тим је мислио да су листе заглављене и прерађивао је код за померање недељама безуспешно. Када су узели профилер и предали податке АИ, испоставило се да су право уско грло слике које се поново учитавају преко мреже са сваким редом. Када је додат визуелни кеш, течност се повећала са 42 ФПС на 60 ФПС. Поука: мерењем се избегавају недеље узалудног напора.
Случај 2 — Функција чудовишта батерије. Апликација за превођење додала је превод текста уживо са камером; Корисници су се жалили да се „телефон загрејао за 15 минута и да је нестало 30% батерије“. Када је консултован АИ, откривено је да камера обрађује 30 кадрова у секунди; Када је ово смањено на 5 кадрова и резултат је ажуриран у размаку од неколико кадрова, потрошња батерије је смањена на једну трећину, а квалитет није био приметан. Лекција: Увек подесите АИ са оком за батерију.
Случај 3 — Споро почетак. Апликација се отварала за 4,5 секунде; 20% корисника је излазило при покретању. Профил је показао да је сав почетни рад (аналитика, учитавање података, припрема модела) обављен узастопно на главној нити. Са предлогом АИ, они су одложени и стављени у задњи план; Време отварања је смањено на 1,3 секунде, а стопа напуштања је преполовљена. Поука: на почетку радите само суштински посао.
Слаби промпт / Јаки промпт
Слаб упит: „Моја апликација је спора, убрзајте је.“
Моћно обавештење: „Померање листе се заглавило (јанк) у мојој Андроид апликацији. Подаци за профилер: биндИмагеВиев траје 28 мс на сваком кадру, слике се сваки пут учитавају са мреже, нема кеш меморије. Сродни код: [РецицлерВиев адаптерски код]. Препоручите 3 најефикасније оптимизације по редоследу утицаја. Наведите очекивано повећање квалитета слике и не смањите могуће нежељене ефекте.
Шаблони који се могу копирати
Шаблон анализе уског грла: „Протумачите следеће податке профила и пронађите 3 најскупље операције: [излаз профилера]. Предложите могући узрок и конкретну оптимизацију за сваку. Прво дајте највећи утицај.“
Шаблон за оптимизацију батерије: „Ова функција брзо троши батерију: [функција, нпр. стална локација]. Учините је прилагођеном батерији:- Смањите фреквенцију узорковања- Ограничење у позадини- Групна обрада- Покрени само када је потребно Сортирај решења без ометања корисничког искуства. [шифра]"
Шаблон за убрзавање покретања: „Убрзајте покретање апликације. Ствари које се тренутно раде при покретању: [листа]. Које се могу одложити, у позадини или лењо учитати? Одвојите основне. [шифра]“
Шаблон трошкова АИ функције: „Процените перформансе и цену батерије функције [модел на уређају/позив у облаку] коју сам додао. Наведите метрике које треба да мерим и стратегије за смањење трошкова. [шифра]“
Уобичајене грешке
- Оптимизација без мерења. Право уско грло је често на другој локацији од предвиђене.
- Трагање за малим добицима. Циљајте на најскупљу акцију, а не на побољшање од 1%.
- Занемаривање трошкова батерије АИ функција. Модел/камера/мрежа који стално ради троши батерију.
- Замарам главну нит. Тешко покретање и померање не би требало да буде у нити корисничког интерфејса.
- Не врши се поновно мерење након оптимизације. Проверите да ли је побољшање стварно и да ништа не ломи.
- Мерење перформанси у емулатору. Стварна брзина уређаја, температура и батерија су потпуно различите.
Укратко
Перформансе и батерија су питање опстанка мобилних апликација. Златно правило: прво измерите, а касније оптимизујте. Давање података о профилу АИ убрзава тумачење; Неизмерна жеља да се „убрза” доводи до слепих нагађања. Циљајте на најскупљу трансакцију, не јурите мале зараде. Могућности вештачке интелигенције додате у овом модулу су моћне, али носе трошкове батерије и процесора; Управљајте овим трошковима смањењем учесталости узорковања, серирања и покретања само када је то потребно. Поново мерите на стварном уређају након сваке оптимизације.
Задатак апликације
Увезите профил у апликацију (свој пројекат или пример) или креирајте узорак излаза профила и дајте да га АИ тумачи помоћу „шаблона анализе уског грла“. Примените оптимизацију највећег утицаја и поново измерите: да ли је број заиста пао? Такође, процените АИ функцију коју сте додали у овај модул (модел на уређају или позив у облаку) у смислу батерије помоћу „Шаблона трошкова АИ функције“ и одредите најмање једно подешавање погодно за батерију.
контролна листа
- [ ] Добио сам профил пре оптимизације, нисам погодио
- [ ] Циљао сам на најскупљу трговину, нисам се расипао на мале профите
- [ ] Дао сам податке о АИ профилу у конкретним бројевима
- [ ] Проценио сам цену батерије/процесора за АИ функције
- [ ] Уклонио сам тешко подизање са главне теме
- [ ] Након оптимизације, поново сам измерио на стварном уређају и проверио регресију