सिद्धांत और Jetpack Compose का इस्तेमाल
बेंचमार्किंग, आपके ऐप्लिकेशन की परफ़ॉर्मेंस की जांच करने और उस पर नज़र रखने का एक तरीका है. परफ़ॉर्मेंस से जुड़ी समस्याओं का विश्लेषण करने और उन्हें ठीक करने के लिए, नियमित तौर पर बेंचमार्क चलाए जा सकते हैं. इससे यह पक्का करने में मदद मिलती है कि हाल ही में किए गए बदलावों में रिग्रेशन न हो.
Android, आपके ऐप्लिकेशन में अलग-अलग तरह की स्थितियों का विश्लेषण और टेस्टिंग करने के लिए, दो बेंचमार्किंग लाइब्रेरी और तरीके उपलब्ध कराता है: Macrobenchmark और Microbenchmark.
मैक्रोबेंचमार्क
Macrobenchmark लाइब्रेरी, असली उपयोगकर्ता के बड़े इंटरैक्शन को मेज़र करती है. जैसे, स्टार्टअप, यूज़र इंटरफ़ेस (यूआई) के साथ इंटरैक्ट करना, और ऐनिमेशन. लाइब्रेरी की मदद से, उस परफ़ॉर्मेंस एनवायरमेंट को सीधे तौर पर कंट्रोल किया जा सकता है जिसकी टेस्टिंग की जा रही है. इससे आपको कंपाइल करने की सुविधा को कंट्रोल करने में मदद मिलती है. साथ ही, इससे ऐप्लिकेशन को शुरू और बंद किया जा सकता है, ताकि ऐप्लिकेशन के स्टार्टअप या स्क्रोलिंग को सीधे तौर पर मेज़र किया जा सके.
Macrobenchmark लाइब्रेरी, इवेंट इंजेक्ट करती है और नतीजों को बाहरी तौर पर मॉनिटर करती है. यह लाइब्रेरी, आपके टेस्ट के साथ बनाए गए टेस्ट ऐप्लिकेशन से काम करती है. इसलिए, बेंचमार्क लिखते समय, अपने ऐप्लिकेशन के कोड को सीधे तौर पर कॉल न करें. इसके बजाय, उपयोगकर्ता के तौर पर अपने ऐप्लिकेशन में नेविगेट करें.
माइक्रोबेंचमार्क
माइक्रोबेंचमार्क लाइब्रेरी की मदद से, ऐप्लिकेशन के कोड को सीधे तौर पर लूप में बेंचमार्क किया जा सकता है. इसे सीपीयू के काम को मेज़र करने के लिए डिज़ाइन किया गया है. यह सबसे अच्छी परफ़ॉर्मेंस का आकलन करता है. जैसे, वार्म अप किया गया जस्ट इन टाइम (जेआईटी) और डिस्क ऐक्सेस कैश मेमोरी में सेव किया गया. यह आपको इनर-लूप या किसी खास हॉट फ़ंक्शन के साथ दिख सकता है. लाइब्रेरी सिर्फ़ उस कोड को मेज़र कर सकती है जिसे सीधे तौर पर कॉल किया जा सकता है.
इन मामलों में बेंचमार्किंग करना फ़ायदेमंद होता है:
- जब आपके ऐप्लिकेशन को किसी जटिल डेटा स्ट्रक्चर को प्रोसेस करना हो.
- जब आपके ऐप्लिकेशन में कोई ऐसा एल्गोरिदम होता है जिसमें काफ़ी ज़्यादा कंप्यूटेशन की ज़रूरत होती है और ऐप्लिकेशन के चलने के दौरान उसे कई बार कॉल किया जाता है.
यूज़र इंटरफ़ेस (यूआई) के कुछ हिस्सों को भी मेज़र किया जा सकता है. उदाहरण के लिए, RecyclerView आइटम बाइंडिंग की लागत, लेआउट को बड़ा होने में लगने वाला समय या आपकी View क्लास के लेआउट और मेज़र पास की परफ़ॉर्मेंस को मेज़र किया जा सकता है.
हालांकि, यह मेज़र नहीं किया जा सकता कि बेंचमार्क किए गए मामलों से, लोगों को मिलने वाले अनुभव पर क्या असर पड़ता है. कुछ मामलों में, बेंचमार्किंग से यह पता नहीं चलता कि आप ड्रॉप किए गए फ़्रेम या ऐप्लिकेशन के स्टार्टअप टाइम जैसी किसी बॉटलनेक में सुधार कर रहे हैं या नहीं. इसलिए, Android Profiler की मदद से, सबसे पहले उन समस्याओं का पता लगाना ज़रूरी है. जिस कोड की जांच और ऑप्टिमाइज़ेशन करना है उसे ढूंढने के बाद, बेंचमार्क किए गए लूप को बार-बार चलाया जा सकता है, ताकि कम नॉइज़ वाले नतीजे मिल सकें. इससे आपको एक ही क्षेत्र में सुधार करने पर ध्यान देने में मदद मिलती है.
माइक्रोबेंचमार्क लाइब्रेरी सिर्फ़ आपके ऐप्लिकेशन के बारे में जानकारी देती है. यह पूरे सिस्टम के बारे में जानकारी नहीं देती. इसलिए, यह ऐप्लिकेशन से जुड़ी स्थितियों की परफ़ॉर्मेंस का विश्लेषण करने के लिए सबसे अच्छा है. यह उन स्थितियों की परफ़ॉर्मेंस का विश्लेषण नहीं कर सकता जो सिस्टम की समस्याओं से जुड़ी हो सकती हैं.
मानदंड की लाइब्रेरी से तुलना
| मैक्रोबेंचमार्क | माइक्रोबेंचमार्क | |
|---|---|---|
| फ़ंक्शन | एंट्री पॉइंट या इंटरैक्शन के हाई-लेवल को मेज़र करें. जैसे, गतिविधि लॉन्च करना या सूची को स्क्रोल करना. | अलग-अलग फ़ंक्शन मेज़र करें. |
| दायरा | पूरे ऐप्लिकेशन की आउट-ऑफ़-प्रोसेस जांच. | सीपीयू के काम की जांच की जा रही है. |
| स्पीड | मीडियम इटरेट करने की स्पीड. यह एक मिनट से ज़्यादा की हो सकती है. | तेज़ी से अलग-अलग वर्शन बनाने की सुविधा. आम तौर पर, 10 सेकंड से कम समय लगता है. |
| ट्रेसिंग | नतीजों के साथ सिस्टम ट्रेस भी मिलते हैं. | नतीजों में, सिस्टम ट्रेस और मेथड ट्रेस डिफ़ॉल्ट रूप से शामिल होते हैं. |
आपके लिए सुझाव
- ध्यान दें: JavaScript बंद होने पर लिंक का टेक्स्ट दिखता है
- बेसलाइन प्रोफ़ाइलें बनाना {:#creating-profile-rules}
- JankStats लाइब्रेरी
- ऐप्लिकेशन की परफ़ॉर्मेंस को मेज़र करने के बारे में खास जानकारी