નફો:
- પ્રથમ પ્રોફાઇલ લઈને અને વાસ્તવિક અડચણને માપીને, અનુમાન લગાવવાને બદલે ડેટાના આધારે ઑપ્ટિમાઇઝેશન બનાવીને અને પ્રોફાઇલ આઉટપુટને આર્ટિફિશિયલ ઇન્ટેલિજન્સ દ્વારા અર્થઘટન કરીને
- સ્ટાર્ટઅપ ટાઈમ, ફ્લુઅન્સી, મેમરી અને બેટરીના સંદર્ભમાં સૌથી મોંઘા ઓપરેશનને ટાર્ગેટ કરવાની અને મુખ્ય થ્રેડમાંથી ભારે કામને દૂર કરવાની ક્ષમતા
- સેમ્પલિંગ અને બેચ પ્રોસેસિંગ દ્વારા ઓન-ડિવાઈસ મોડલ અને ક્લાઉડ કોલિંગ જેવી AI ક્ષમતાઓની બેટરી અને પ્રોસેસર ખર્ચનું સંચાલન કરવાની ક્ષમતા
મોબાઇલ વપરાશકર્તાઓ અધીરા છે. જો એપ ધીમેથી ખુલે છે, સ્ક્રોલ કરતી વખતે અટકી જાય છે અથવા બેટરી ઝડપથી ખતમ થઈ જાય છે, તો વપરાશકર્તા તેને કાઢી નાખે છે અને સ્ટોરમાં તેને સ્ટાર રેટિંગ આપે છે. પ્રદર્શન અને બેટરી કાર્યક્ષમતા એ મોબાઇલ એપ્લિકેશનના અસ્તિત્વની બાબત છે; તે વપરાશકર્તાના સંતોષ અને સ્ટોર રેન્કિંગ બંનેને સીધી અસર કરે છે. AI એ કામગીરીની અડચણો (અડચણો) શોધવા, માપન પરિણામોનું અર્થઘટન કરવા અને ઑપ્ટિમાઇઝેશનની ભલામણ કરવામાં એક શક્તિશાળી સહાયક છે. પરંતુ સુવર્ણ નિયમ રહે છે: પહેલા માપો, પછીથી ઑપ્ટિમાઇઝ કરો. આ એકમમાં, અમે AI સાથે ડેટા-આધારિત રીતે પ્રદર્શન અને બેટરીની સમસ્યાઓનું નિરાકરણ કરવાનું શીખીશું. ખાસ કરીને મહત્વનો મુદ્દો એ છે કે અમે અગાઉના એકમો (ઓન-ડિવાઈસ મોડલ, ક્લાઉડ કૉલિંગ)માં ઉમેરેલી AI ક્ષમતાઓની બેટરી અને પ્રદર્શન પરની અસરનું સંચાલન કરવું.
માપ્યા વિના ઑપ્ટિમાઇઝ
બિનઅનુભવી વિકાસકર્તાની સૌથી મોટી ભૂલ એ અનુમાનિત ઑપ્ટિમાઇઝેશન છે: "આ ધીમું હોવું જોઈએ" એમ કહીને સમય બગાડવો. વાસ્તવિક અડચણ લગભગ હંમેશા અણધારી જગ્યાએ હોય છે. તેથી પ્રથમ પ્રોફાઇલ લેવામાં આવે છે (પ્રોફાઇલિંગ — એપ્લીકેશનનો કયો ભાગ કેટલો સમય/મેમરી/બેટરી વાપરે છે તે માપવા). એન્ડ્રોઇડ સ્ટુડિયો પ્રોફાઇલર અને એક્સકોડ ઇન્સ્ટ્રુમેન્ટ્સ આ કામ માટે છે. AI ને માપન ડેટા આપવાથી અર્થઘટનની ઝડપ વધે છે; પરંતુ માપન વિના, AI ને "મારી એપ્લિકેશન ધીમી છે, તેને ઝડપી કરો" કહેવાનો અર્થ એ છે કે આંખ બંધ કરીને આગાહીઓ કરવી.
પ્રદર્શનના ચાર મુખ્ય અક્ષો છે:
ધરી
લક્ષણ
લાક્ષણિક કારણ
પ્રારંભ સમય
એપ્લિકેશન મોડેથી ખુલે છે
મુખ્ય થ્રેડ પર ભારે કામ
પ્રવાહિતા (જંક)
સ્ક્રોલ અટકી જાય છે
લાંબી પ્રક્રિયા, UI થ્રેડમાં બિનજરૂરી ફરીથી દોરો
મેમરી
સોજો, પતન
લીક, મોટી છબી, કેશ અનિયંત્રિત
બેટરી/ગરમી
ઝડપી સ્ખલન
સતત સ્થાન, નેટવર્ક, સેન્સર, પૃષ્ઠભૂમિ જોબ
ટીપ: જ્યારે AI ને પરફોર્મન્સ સમસ્યા વિશે પૂછો, ત્યારે પ્રોફાઇલ આઉટપુટ આપો (કયા ફંક્શનમાં કેટલો સમય લાગે છે, મેમરી ગ્રાફ). હાર્ડ ડેટા જેમ કે "તે કાર્ય ફ્રેમ દીઠ 30ms લે છે" એ AI ને વાસ્તવિક અવરોધ પર ધ્યાન કેન્દ્રિત કરવાની મંજૂરી આપે છે; "ધીમો" જેવો વ્યક્તિલક્ષી શબ્દસમૂહ એક સામાન્ય અને નકામો જવાબ આપે છે.
AI ક્ષમતાઓની બેટરી ખર્ચ
અમે આ મોડ્યુલમાં ઉમેરેલ AI સુવિધાઓ શક્તિશાળી છે, પરંતુ તે મફત નથી. ઓન-ડિવાઈસ મોડલ કાઢવાથી પ્રોસેસર અને બેટરી પર તાણ આવે છે; સતત ચાલી રહેલ ઇમેજ રેકગ્નિશન (દા.ત. કેમેરો દરેક ફ્રેમ પર પ્રક્રિયા કરે છે) ફોનને ગરમ કરશે અને મિનિટોમાં બેટરી કાઢી નાખશે. બીજી બાજુ, ક્લાઉડ AI કૉલ્સ, નેટવર્ક રેડિયો (એન્ટેના જે ડેટા મોકલે છે અને મેળવે છે) ને હંમેશા ચાલુ રાખીને બેટરી ઉઠાવે છે. ઉકેલો: જ્યારે જરૂર હોય ત્યારે જ ઉપકરણ પરનું મોડલ ચલાવો, દરેક ફ્રેમને બદલે પ્રતિ સેકન્ડમાં થોડી વાર કેમેરાનો નમૂનો લો, બેચ ક્લાઉડ વિનંતીઓ મોકલો, ઉપકરણ ચાર્જ થઈ રહ્યું હોય અથવા નિષ્ક્રિય હોય ત્યારે ભારે લિફ્ટિંગ કરો.
સાવચેતી: સતત ચાલતી AI સુવિધા (લાઇવ અનુવાદ, સતત ઑબ્જેક્ટ ઓળખ) બેટરીને ખૂબ જ ઝડપથી કાઢી શકે છે, ઉપકરણને ગરમ કરી શકે છે અને સિસ્ટમ દ્વારા થ્રોટલ થઈ શકે છે. એક સુવિધા જે વપરાશકર્તાને લાગે છે કે આ કિંમત કાઢી નાખવામાં આવી છે. હું હંમેશા એઆઈને પૂછું છું કે "હું આ સુવિધાને બેટરી ફ્રેન્ડલી કેવી રીતે બનાવી શકું?" પ્રશ્ન પણ પૂછો.
ઑપ્ટિમાઇઝેશનના પગલાં
- માપ. પ્રોફાઇલર સાથે વાસ્તવિક અડચણ શોધો; અનુમાન ન કરો.
- સૌથી મોટી સમસ્યા પસંદ કરો. 1% સુધારણાનો પીછો કરશો નહીં; સૌથી મોંઘા વ્યવહાર માટે લક્ષ્ય રાખો.
- ડેટા સાથે AI ને પૂછો. પ્રોફાઇલ આઉટપુટ + સંબંધિત કોડ સાથે ઑપ્ટિમાઇઝેશન સૂચનની વિનંતી કરો.
- લાગુ કરો અને ફરીથી માપો. શું સુધારો વાસ્તવિક છે? નંબર ઘટી ગયો છે?
- રીગ્રેસન નિયંત્રણ. શું ઑપ્ટિમાઇઝેશન કંઈપણ ભંગ કરે છે? દ્રશ્ય અને કાર્યાત્મક પરીક્ષણનું પુનરાવર્તન કરો.
ત્રણ નાના કેસો
કેસ 1 — ખોટી જગ્યાએ શોધવું. એક ટીમે વિચાર્યું કે યાદીઓ અટવાઈ ગઈ છે અને અઠવાડિયા સુધી સ્ક્રોલિંગ કોડને ફરીથી કામ કર્યું કોઈ ફાયદો ન થયો. જ્યારે તેઓએ પ્રોફાઇલર લીધું અને AI ને ડેટા ખવડાવ્યો, ત્યારે તે બહાર આવ્યું કે વાસ્તવિક અડચણ એ છે કે દરેક પંક્તિ સાથે નેટવર્ક પર ફરીથી લોડ થતી છબીઓ. જ્યારે વિઝ્યુઅલ કેશ ઉમેરવામાં આવ્યું હતું, ત્યારે પ્રવાહિતા 42 FPS થી વધીને 60 FPS થઈ હતી. પાઠ: માપન અઠવાડિયાના નિરર્થક પ્રયત્નોને ટાળે છે.
કેસ 2 - બેટરી મોન્સ્ટર લક્ષણ. અનુવાદ એપ્લિકેશન કેમેરા સાથે જીવંત ટેક્સ્ટ અનુવાદ ઉમેરે છે; વપરાશકર્તાઓએ ફરિયાદ કરી હતી કે "ફોન 15 મિનિટમાં ગરમ થઈ ગયો અને 30% બેટરી ગઈ." જ્યારે AI ની સલાહ લેવામાં આવી, ત્યારે કેમેરા પ્રતિ સેકન્ડ 30 ફ્રેમ્સ પર પ્રક્રિયા કરતો જણાયો; જ્યારે આ ઘટાડીને 5 ફ્રેમ્સ કરવામાં આવ્યું હતું અને પરિણામ થોડા ફ્રેમ્સ સિવાય અપડેટ કરવામાં આવ્યું હતું, ત્યારે બેટરીનો વપરાશ એક તૃતીયાંશ જેટલો ઘટી ગયો હતો અને ગુણવત્તા ધ્યાનપાત્ર ન હતી. પાઠ: હંમેશા બેટરી આંખ સાથે AI સેટ કરો.
કેસ 3 - ધીમી શરૂઆત. એક એપ 4.5 સેકન્ડમાં ખુલતી હતી; 20% વપરાશકર્તાઓ સ્ટાર્ટઅપ સમયે બહાર નીકળી રહ્યા હતા. પ્રોફાઇલ દર્શાવે છે કે તમામ પ્રારંભિક કાર્ય (વિશ્લેષણ, ડેટા લોડિંગ, મોડેલ તૈયારી) મુખ્ય થ્રેડ પર ક્રમિક રીતે કરવામાં આવ્યું હતું. AI દરખાસ્ત સાથે, આ મુલતવી રાખવામાં આવ્યા છે અને પાછળના બર્નર પર મૂકવામાં આવ્યા છે; શરૂઆતનો સમય ઘટાડીને 1.3 સેકન્ડ કરવામાં આવ્યો હતો અને ત્યાગનો દર અડધો થઈ ગયો હતો. પાઠ: શરૂઆતમાં માત્ર આવશ્યક કામ કરો.
નબળા પ્રોમ્પ્ટ / મજબૂત પ્રોમ્પ્ટ
નબળા સંકેત: "મારી એપ્લિકેશન ધીમી છે, તેને ઝડપી કરો."
શક્તિશાળી પ્રોમ્પ્ટ: "મારી એન્ડ્રોઇડ એપ્લિકેશનમાં સૂચિ સ્ક્રોલીંગ અટકી જાય છે (જાંક). પ્રોફાઇલર ડેટા: bindImageView દરેક ફ્રેમ પર 28ms લે છે, દરેક વખતે નેટવર્કમાંથી છબીઓ લોડ થાય છે, ત્યાં કોઈ કેશ નથી. સંબંધિત કોડ: [RecyclerView એડેપ્ટર કોડ]. 3 સૌથી અસરકારક ઑપ્ટિમાઇઝેશનની ભલામણ કરો. દરેક સંભવિત સાઇડ ઇફેક્ટ્સને અસર કરવા માટે અને સંભવિત ઉકેલોને પ્રાધાન્ય આપો. છબીની ગુણવત્તા ઘટાડશો નહીં."
નકલ કરી શકાય તેવા નમૂનાઓ
બોટલનેક વિશ્લેષણ ટેમ્પલેટ: "નીચેના પ્રોફાઇલ ડેટાનું અર્થઘટન કરો અને 3 સૌથી ખર્ચાળ કામગીરી શોધો: [પ્રોફાઇલર આઉટપુટ]. દરેક માટે સંભવિત કારણ અને નક્કર ઑપ્ટિમાઇઝેશન સૂચવો. સૌથી વધુ અસર પ્રથમ આપો."
બૅટરી ઑપ્ટિમાઇઝેશન ટેમ્પલેટ:"આ સુવિધા બૅટરી ઝડપથી કાઢી નાખે છે: [સુવિધા, દા.ત. કાયમી સ્થાન]. તેને બૅટરી મૈત્રીપૂર્ણ બનાવો:- સેમ્પલિંગ આવર્તન ઘટાડવું- પૃષ્ઠભૂમિમાં પ્રતિબંધ- બેચ પ્રોસેસિંગ- વપરાશકર્તા અનુભવને ખલેલ પહોંચાડ્યા વિના ઉકેલોને સૉર્ટ કરો ત્યારે જ ચલાવો. [કોડ]"
સ્ટાર્ટઅપ સ્પીડ-અપ ટેમ્પલેટ: "એપ્લિકેશન સ્ટાર્ટઅપને ઝડપી બનાવો. હાલમાં સ્ટાર્ટઅપ પર કરવામાં આવી રહેલી વસ્તુઓ: [સૂચિ]. જે મુલતવી, બેકગ્રાઉન્ડ અથવા આળસુ-લોડ કરી શકાય છે? આવશ્યકને અલગ કરો. [કોડ]"
AI ફીચર કોસ્ટ ટેમ્પ્લેટ: "મેં ઉમેરેલ [ઓન-ડિવાઈસ મોડલ / ક્લાઉડ કૉલ] ફીચરની કામગીરી અને બેટરી ખર્ચનું મૂલ્યાંકન કરો. મારે માપવા જોઈએ તે મેટ્રિક્સ અને ખર્ચ ઘટાડવા માટેની વ્યૂહરચનાઓની સૂચિ બનાવો. [કોડ]"
સામાન્ય ભૂલો
- માપ્યા વિના ઑપ્ટિમાઇઝ. વાસ્તવિક અડચણ ઘણીવાર અનુમાન કરતાં અલગ સ્થાને હોય છે.
- નાના લાભોનો પીછો. 1% સુધારણાને બદલે સૌથી ખર્ચાળ ક્રિયા માટે લક્ષ્ય રાખો.
- AI સુવિધાઓની બેટરીની કિંમતને અવગણવી. સતત ચાલતા મોડલ/કેમેરા/નેટવર્ક બેટરીને ખાઈ જાય છે.
- મુખ્ય થ્રેડ અપ થાકી. શરુઆત અને સ્ક્રોલ કરવાની ભારે લિફ્ટિંગ UI થ્રેડ પર ન હોવી જોઈએ.
- ઑપ્ટિમાઇઝેશન પછી ફરીથી માપન નથી. ચકાસો કે સુધારો વાસ્તવિક છે અને કંઈપણ ભંગ કરતું નથી.
- ઇમ્યુલેટરમાં કામગીરીનું માપન. વાસ્તવિક ઉપકરણ ઝડપ, તાપમાન અને બેટરી સંપૂર્ણપણે અલગ છે.
સારાંશમાં
પરફોર્મન્સ અને બેટરી એ મોબાઈલ એપના અસ્તિત્વની બાબત છે. સુવર્ણ નિયમ: પહેલા માપો, પછી ઑપ્ટિમાઇઝ કરો. AI ને પ્રોફાઇલ ડેટા આપવાથી અર્થઘટનને વેગ મળે છે; "સ્પીડ અપ" કરવાની અમાપ ઇચ્છા આંધળા અનુમાન તરફ દોરી જાય છે. સૌથી મોંઘા વ્યવહારનું લક્ષ્ય રાખો, નાના નફાનો પીછો ન કરો. આ મોડ્યુલમાં ઉમેરવામાં આવેલી AI ક્ષમતાઓ શક્તિશાળી છે પરંતુ બેટરી અને પ્રોસેસર ખર્ચ વહન કરે છે; સેમ્પલિંગ ફ્રીક્વન્સી, બેચિંગ અને જરૂર પડ્યે જ ચલાવીને આ ખર્ચનું સંચાલન કરો. દરેક ઑપ્ટિમાઇઝેશન પછી વાસ્તવિક ઉપકરણ પર ફરીથી માપો.
એપ્લિકેશન કાર્ય
એપ્લિકેશનમાં પ્રોફાઇલ આયાત કરો (તમારો પોતાનો પ્રોજેક્ટ અથવા ઉદાહરણ) અથવા નમૂના પ્રોફાઇલ આઉટપુટ બનાવો અને "બોટલનેક વિશ્લેષણ નમૂના" સાથે AI દ્વારા તેનું અર્થઘટન કરો. સૌથી વધુ અસર ઑપ્ટિમાઇઝેશન લાગુ કરો અને ફરીથી માપો: શું ખરેખર સંખ્યા ઘટી છે? ઉપરાંત, તમે આ મોડ્યુલમાં ઉમેરેલ AI સુવિધાનું મૂલ્યાંકન કરો (ઓન-ડિવાઈસ મોડલ અથવા ક્લાઉડ કૉલ) "AI ફીચર કોસ્ટ ટેમ્પલેટ" વડે બેટરીના સંદર્ભમાં અને ઓછામાં ઓછું એક બેટરી-ફ્રેંડલી સેટિંગ નક્કી કરો.
ચેકલિસ્ટ
- [ ] મને ઓપ્ટિમાઇઝેશન પહેલા પ્રોફાઇલ મળી, મેં ધાર્યું ન હતું
- [ ] મેં સૌથી મોંઘા વેપારનું લક્ષ્ય રાખ્યું હતું, મેં નાના નફા પર છૂટાછવાયા નથી કર્યા
- [ ] મેં નક્કર સંખ્યામાં AI પ્રોફાઇલ ડેટા આપ્યો
- [ ] મેં AI સુવિધાઓની બેટરી/પ્રોસેસરની કિંમતનું મૂલ્યાંકન કર્યું
- [ ] મેં મુખ્ય થ્રેડમાંથી ભારે લિફ્ટિંગ દૂર કર્યું
- [ ] ઑપ્ટિમાઇઝેશન પછી, મેં વાસ્તવિક ઉપકરણ પર ફરીથી માપ્યું અને રીગ્રેસન તપાસ્યું