नफा:
- प्रथम प्रोफाइल घेऊन आणि वास्तविक अडथळे मोजून, अंदाज करण्याऐवजी डेटावर आधारित ऑप्टिमायझेशन बनवून आणि कृत्रिम बुद्धिमत्तेद्वारे प्रोफाइल आउटपुटचा अर्थ लावणे.
- स्टार्टअप वेळ, प्रवाहीपणा, मेमरी आणि बॅटरीच्या दृष्टीने सर्वात महाग ऑपरेशन लक्ष्य करण्याची क्षमता आणि मुख्य थ्रेडमधून जड काम काढून टाकण्याची क्षमता
- सॅम्पलिंग आणि बॅच प्रोसेसिंगद्वारे ऑन-डिव्हाइस मॉडेल आणि क्लाउड कॉलिंग यासारख्या एआय क्षमतेची बॅटरी आणि प्रोसेसर खर्च व्यवस्थापित करण्याची क्षमता
मोबाईल वापरकर्ते अधीर आहेत. ॲप हळू उघडत असल्यास, स्क्रोल करताना हँग होत असल्यास किंवा बॅटरी लवकर संपल्यास, वापरकर्ता ते हटवतो आणि स्टोअरमध्ये त्याला स्टार रेटिंग देतो. कार्यप्रदर्शन आणि बॅटरी कार्यक्षमता ही मोबाइल ॲपच्या अस्तित्वाची बाब आहे; हे वापरकर्त्याचे समाधान आणि स्टोअर रँकिंग या दोन्हींवर थेट परिणाम करते. AI हे कार्यप्रदर्शनातील अडथळे (अडथळे) शोधण्यात, मापन परिणामांचा अर्थ लावण्यासाठी आणि ऑप्टिमायझेशनची शिफारस करण्यात एक शक्तिशाली मदत आहे. परंतु सुवर्ण नियम कायम आहे: प्रथम मोजा, नंतर अनुकूल करा. या युनिटमध्ये, आम्ही AI सह डेटा-आधारित पद्धतीने कार्यप्रदर्शन आणि बॅटरी समस्या सोडवण्यास शिकू. आम्ही मागील युनिट्समध्ये जोडलेल्या AI क्षमतेच्या बॅटरी आणि कार्यप्रदर्शनावर होणारा परिणाम व्यवस्थापित करणे ही विशेषतः महत्त्वाची समस्या आहे (डिव्हाइसवर मॉडेल, क्लाउड कॉलिंग).
मापन न करता ऑप्टिमाइझ करणे
अननुभवी विकसकाची सर्वात मोठी चूक म्हणजे भविष्यसूचक ऑप्टिमायझेशन: "हे सावकाश असावे" असे म्हणत वेळ वाया घालवणे. वास्तविक अडचण जवळजवळ नेहमीच अनपेक्षित ठिकाणी असते. म्हणून प्रथम प्रोफाइल घेतले जाते (प्रोफाइलिंग — अनुप्रयोगाचा कोणता भाग किती वेळ/मेमरी/बॅटरी वापरतो हे मोजणे). अँड्रॉइड स्टुडिओ प्रोफाइलर आणि एक्सकोड इन्स्ट्रुमेंट्स या नोकरीसाठी आहेत. AI ला मोजमाप डेटा दिल्याने अर्थ लावणे वेगवान होते; पण मोजमाप न करता, AI ला सांगणे "माझा ऍप्लिकेशन मंद आहे, वेग वाढवा" म्हणजे आंधळेपणाने अंदाज बांधणे.
कामगिरीचे चार मुख्य अक्ष आहेत:
अक्ष
लक्षण
वैशिष्ट्यपूर्ण कारण
प्रारंभ वेळ
अर्ज उशीरा उघडतो
मुख्य धाग्यावर भारी काम
प्रवाहीपणा (जंक)
स्क्रोल अडकतो
दीर्घ प्रक्रिया, UI थ्रेडमध्ये अनावश्यक पुन्हा काढणे
स्मृती
सूज येणे, कोसळणे
गळती, मोठी प्रतिमा, कॅशे अनियंत्रित
बॅटरी/उष्णता
जलद स्खलन
सतत स्थान, नेटवर्क, सेन्सर, बॅकग्राउंड जॉब
टीप: AI ला कार्यप्रदर्शन समस्येबद्दल विचारताना, प्रोफाइल आउटपुट द्या (कोणते कार्य किती वेळ घेते, मेमरी आलेख). "ते फंक्शन प्रति फ्रेम 30ms घेते" सारखा हार्ड डेटा एआयला वास्तविक अडथळ्यावर लक्ष केंद्रित करण्यास अनुमती देतो; "मंद" सारखे व्यक्तिपरक वाक्यांश एक सामान्य आणि निरुपयोगी उत्तर देते.
AI क्षमतेची बॅटरीची किंमत
आम्ही या मॉड्यूलमध्ये जोडलेली AI वैशिष्ट्ये शक्तिशाली आहेत, परंतु ती विनामूल्य नाहीत. ऑन-डिव्हाइस मॉडेल काढल्याने प्रोसेसर आणि बॅटरीवर ताण येतो; सतत चालू असलेली प्रतिमा ओळख (उदा. प्रत्येक फ्रेमवर प्रक्रिया करणारा कॅमेरा) फोन गरम करेल आणि काही मिनिटांतच बॅटरी संपेल. क्लाउड एआय कॉल, दुसरीकडे, नेटवर्क रेडिओ (डेटा पाठवणारा आणि प्राप्त करणारा अँटेना) सतत चालू ठेवून बॅटरी खातो. उपाय: जेव्हा गरज असेल तेव्हाच ऑन-डिव्हाइस मॉडेल चालवा, प्रत्येक फ्रेमऐवजी प्रति सेकंद काही वेळा कॅमेरा नमुना घ्या, बॅच क्लाउड विनंत्या पाठवा, डिव्हाइस चार्ज होत असताना किंवा निष्क्रिय असताना हेवी लिफ्टिंग करा.
खबरदारी: सतत चालू असलेले AI वैशिष्ट्य (लाइव्ह भाषांतर, सतत ऑब्जेक्ट ओळखणे) बॅटरी खूप लवकर संपुष्टात आणू शकते, डिव्हाइस गरम करू शकते आणि सिस्टमद्वारे थ्रोटल होऊ शकते. एक वैशिष्ट्य जे वापरकर्त्याला वाटते की ही किंमत हटविली गेली आहे. मी नेहमी AI विचारतो "मी हे वैशिष्ट्य बॅटरी अनुकूल कसे बनवू?" प्रश्न देखील विचारा.
ऑप्टिमायझेशनचे टप्पे
- माप. प्रोफाइलरसह वास्तविक अडथळे शोधा; अंदाज लावू नका.
- सर्वात मोठी समस्या निवडा. 1% सुधारणेचा पाठलाग करू नका; सर्वात महागड्या व्यवहाराचे लक्ष्य ठेवा.
- डेटासह AI ला विचारा. प्रोफाइल आउटपुट + संबंधित कोडसह ऑप्टिमायझेशन सूचनेची विनंती करा.
- लागू करा आणि पुन्हा मोजा. सुधारणा खरी आहे का? संख्या कमी झाली आहे का?
- प्रतिगमन नियंत्रण. ऑप्टिमायझेशनने काही खंडित केले का? व्हिज्युअल आणि फंक्शनल चाचणीची पुनरावृत्ती करा.
तीन लहान प्रकरणे
केस 1 - चुकीच्या ठिकाणी शोधत आहे. एका संघाला वाटले की याद्या अडकल्या आहेत आणि काही आठवड्यांपर्यंत स्क्रोलिंग कोड पुन्हा तयार केला नाही. जेव्हा त्यांनी प्रोफाइलर घेतला आणि एआयला डेटा दिला, तेव्हा असे दिसून आले की प्रत्येक पंक्तीसह नेटवर्कवर प्रतिमा पुन्हा लोड करणे ही वास्तविक अडचण होती. जेव्हा व्हिज्युअल कॅशे जोडले गेले, तेव्हा प्रवाह 42 FPS वरून 60 FPS पर्यंत वाढला. धडा: मोजमाप काही आठवड्यांचे व्यर्थ प्रयत्न टाळते.
केस 2 - बॅटरी मॉन्स्टर वैशिष्ट्य. एका भाषांतर ॲपने कॅमेरासह थेट मजकूर अनुवाद जोडला; वापरकर्त्यांनी तक्रार केली की "फोन 15 मिनिटांत गरम झाला आणि 30% बॅटरी संपली." जेव्हा AI चा सल्ला घेण्यात आला तेव्हा कॅमेरा प्रति सेकंद 30 फ्रेम्सवर प्रक्रिया करत असल्याचे आढळले; जेव्हा हे 5 फ्रेम्सपर्यंत कमी केले गेले आणि परिणाम काही फ्रेम्सच्या व्यतिरिक्त अद्यतनित केला गेला, तेव्हा बॅटरीचा वापर एक तृतीयांश इतका कमी झाला आणि गुणवत्ता लक्षात येण्यासारखी नव्हती. धडा: एआय नेहमी बॅटरी डोळ्याने सेट करा.
केस 3 - हळूवार सुरुवात. 4.5 सेकंदात एक ॲप उघडत होते; 20% वापरकर्ते स्टार्टअपच्या वेळी बाहेर पडत होते. प्रोफाइलमध्ये असे दिसून आले की सर्व प्रारंभिक कार्य (विश्लेषण, डेटा लोडिंग, मॉडेल तयार करणे) मुख्य थ्रेडवर अनुक्रमे केले गेले. AI प्रस्तावासह, हे पुढे ढकलले गेले आहेत आणि बॅक बर्नरवर ठेवले आहेत; सुरुवातीची वेळ 1.3 सेकंदांपर्यंत कमी करण्यात आली आणि त्याग दर अर्धा करण्यात आला. धडा: सुरुवातीला फक्त आवश्यक काम करा.
कमकुवत प्रॉम्प्ट / मजबूत प्रॉम्प्ट
कमकुवत प्रॉम्प्ट: "माझे ॲप मंद आहे, त्याचा वेग वाढवा."
शक्तिशाली प्रॉम्प्ट: "माझ्या Android ऍप्लिकेशनमध्ये सूची स्क्रोलिंग अडकले (जँक). प्रोफाइलर डेटा: bindImageView ला प्रत्येक फ्रेमवर 28ms लागतात, प्रतिमा प्रत्येक वेळी नेटवर्कवरून लोड केल्या जातात, तेथे कोणतेही कॅशे नसते. संबंधित कोड: [RecyclerView अडॅप्टर कोड]. 3 सर्वात प्रभावी ऑप्टिमायझेशनची शिफारस करा. प्रत्येक संभाव्य साइड इफेक्ट्स आणि सोल्यूशनच्या संभाव्य परिणामाच्या क्रमाने प्राइझ करा. प्रतिमा गुणवत्ता कमी करू नका."
कॉपी करण्यायोग्य टेम्पलेट्स
बॉटलनेक विश्लेषण टेम्पलेट: "खालील प्रोफाइल डेटाचा अर्थ लावा आणि 3 सर्वात महाग ऑपरेशन्स शोधा: [प्रोफाइलर आउटपुट]. प्रत्येकासाठी संभाव्य कारण आणि ठोस ऑप्टिमायझेशन सुचवा. प्रथम सर्वात जास्त प्रभाव द्या."
बॅटरी ऑप्टिमायझेशन टेम्प्लेट:"हे वैशिष्ट्य बॅटरी द्रुतपणे काढून टाकते: [वैशिष्ट्य, उदा. कायमचे स्थान]. ते बॅटरी अनुकूल बनवा:- सॅम्पलिंग वारंवारता कमी करा- पार्श्वभूमीतील प्रतिबंध- बॅच प्रक्रिया- वापरकर्त्याच्या अनुभवात व्यत्यय न आणता फक्त आवश्यक असेल तेव्हाच चालवा. [कोड]"
स्टार्टअप स्पीड-अप टेम्प्लेट: "ॲप्लिकेशन स्टार्टअपला गती द्या. सध्या स्टार्टअपवर केल्या जात असलेल्या गोष्टी: [सूची]. कोणती पुढे ढकलली जाऊ शकते, पार्श्वभूमी किंवा आळशी-लोड केली जाऊ शकते? आवश्यक वेगळे करा. [कोड]"
AI वैशिष्ट्य खर्च टेम्पलेट: "मी जोडलेल्या [डिव्हाइसवर मॉडेल / क्लाउड कॉल] वैशिष्ट्याचे कार्यप्रदर्शन आणि बॅटरी खर्चाचे मूल्यमापन करा. मला मोजावे लागणारे मेट्रिक्स आणि खर्च कमी करण्यासाठी धोरणे सूचीबद्ध करा. [कोड]"
सामान्य चुका
- मापन न करता ऑप्टिमाइझ करणे. वास्तविक अडथळे बहुतेक वेळा अंदाजापेक्षा वेगळ्या ठिकाणी असतात.
- लहान नफ्यांचा पाठलाग. 1% सुधारण्याऐवजी सर्वात महागड्या कृतीचे लक्ष्य ठेवा.
- AI वैशिष्ट्यांच्या बॅटरी खर्चाकडे दुर्लक्ष करणे. सतत चालणारे मॉडेल/कॅमेरा/नेटवर्क बॅटरी खाऊन टाकते.
- मुख्य धागा थकवा. प्रारंभ आणि स्क्रोलिंगचे हेवी लिफ्टिंग UI थ्रेडवर नसावे.
- ऑप्टिमायझेशन नंतर पुन्हा मापन नाही. सुधारणा वास्तविक आहे आणि काहीही खंडित होत नाही हे सत्यापित करा.
- एमुलेटरमध्ये कार्यप्रदर्शन मोजत आहे. वास्तविक डिव्हाइसचा वेग, तापमान आणि बॅटरी पूर्णपणे भिन्न आहेत.
सारांशात
परफॉर्मन्स आणि बॅटरी ही मोबाइल ॲपच्या अस्तित्वाची बाब आहे. सुवर्ण नियम: प्रथम मोजा, नंतर ऑप्टिमाइझ करा. AI ला प्रोफाइल डेटा दिल्याने अर्थ लावणे वेगवान होते; "वेग वाढवण्याची" असीम इच्छा आंधळ्या अंदाजांना कारणीभूत ठरते. सर्वात महागड्या व्यवहारासाठी लक्ष्य ठेवा, लहान नफ्याचा पाठलाग करू नका. या मॉड्यूलमध्ये जोडलेल्या AI क्षमता शक्तिशाली आहेत परंतु बॅटरी आणि प्रोसेसरचा खर्च उचलतात; सॅम्पलिंग फ्रिक्वेंसी, बॅचिंग आणि गरज असेल तेव्हाच रनिंग करून हा खर्च व्यवस्थापित करा. प्रत्येक ऑप्टिमायझेशननंतर वास्तविक डिव्हाइसवर पुन्हा मोजा.
अर्ज कार्य
ॲप्लिकेशनमध्ये प्रोफाइल इंपोर्ट करा (तुमचा स्वतःचा प्रोजेक्ट किंवा उदाहरण) किंवा नमुना प्रोफाइल आउटपुट तयार करा आणि "बॉटलनेक ॲनालिसिस टेम्प्लेट" सह AI द्वारे त्याचा अर्थ लावा. सर्वोच्च प्रभाव ऑप्टिमायझेशन लागू करा आणि पुन्हा मोजा: संख्या प्रत्यक्षात कमी झाली का? तसेच, तुम्ही या मॉड्यूलमध्ये जोडलेल्या AI वैशिष्ट्याचे मूल्यांकन करा (डिव्हाइसवर मॉडेल किंवा क्लाउड कॉल) "AI वैशिष्ट्य खर्च टेम्पलेट" सह बॅटरीच्या बाबतीत आणि किमान एक बॅटरी-अनुकूल सेटिंग निर्धारित करा.
चेकलिस्ट
- [ ] मला ऑप्टिमायझेशनपूर्वी प्रोफाइल मिळाले, मला अंदाज नव्हता
- [ ] मी सर्वात महाग व्यापाराचे उद्दिष्ट ठेवले होते, मी लहान नफ्यावर विखुरलो नाही
- [ ] मी AI प्रोफाईल डेटा ठोस संख्यांमध्ये दिला आहे
- [ ] मी AI वैशिष्ट्यांच्या बॅटरी/प्रोसेसरच्या किंमतीचे मूल्यांकन केले
- [ ] मी मुख्य धाग्यातून जड उचल काढले
- [ ] ऑप्टिमायझेशननंतर, मी वास्तविक डिव्हाइसवर पुन्हा मोजले आणि प्रतिगमन तपासले