अपने ऐप्लिकेशन का मानदंड तय करना

मानदंडों के हिसाब से तुलना करने की सुविधा का इस्तेमाल करके, अपने ऐप्लिकेशन की परफ़ॉर्मेंस की जांच की जा सकती है और उस पर नज़र रखी जा सकती है. परफ़ॉर्मेंस से जुड़ी समस्याओं का विश्लेषण करने और उन्हें ठीक करने के लिए, नियमित तौर पर मानदंड लागू किए जा सकते हैं. इससे यह पक्का करने में मदद मिलती है कि हाल ही में किए गए बदलावों से, परफ़ॉर्मेंस में गिरावट न आए.

Android, आपके ऐप्लिकेशन में अलग-अलग तरह की स्थितियों का विश्लेषण और टेस्टिंग करने के लिए, दो बेंचमार्किंग लाइब्रेरी और तरीके उपलब्ध कराता है: मैक्रोबेंचमार्क और माइक्रोबेंचमार्क.

मैक्रोबेंचमार्क

Macrobenchmark लाइब्रेरी, असली उपयोगकर्ता के बड़े इंटरैक्शन को मेज़र करती है. जैसे, स्टार्टअप, यूज़र इंटरफ़ेस (यूआई) के साथ इंटरैक्ट करना, और ऐनिमेशन. लाइब्रेरी की मदद से, उस परफ़ॉर्मेंस एनवायरमेंट को सीधे तौर पर कंट्रोल किया जा सकता है जिसकी टेस्टिंग की जा रही है. इससे आपको कंपाइल करने की प्रोसेस को कंट्रोल करने में मदद मिलती है. साथ ही, इससे आपको अपने ऐप्लिकेशन को शुरू और बंद करने की सुविधा मिलती है, ताकि ऐप्लिकेशन के स्टार्टअप या स्क्रोलिंग को सीधे तौर पर मापा जा सके.

Macrobenchmark लाइब्रेरी, इवेंट इंजेक्ट करती है और नतीजों को बाहरी तौर पर मॉनिटर करती है. यह काम, आपके टेस्ट के साथ बनाए गए टेस्ट ऐप्लिकेशन से किया जाता है. इसलिए, बेंचमार्क लिखते समय, अपने ऐप्लिकेशन के कोड को सीधे तौर पर कॉल न करें. इसके बजाय, उपयोगकर्ता के तौर पर अपने ऐप्लिकेशन में नेविगेट करें.

माइक्रोबेंचमार्क

माइक्रोबेंचमार्क लाइब्रेरी की मदद से, ऐप्लिकेशन के कोड को सीधे तौर पर लूप में बेंचमार्क किया जा सकता है. इसे सीपीयू के काम को मेज़र करने के लिए डिज़ाइन किया गया है. इससे सबसे अच्छी परफ़ॉर्मेंस का आकलन किया जाता है. जैसे, वार्म अप किया गया जस्ट इन टाइम (जेआईटी) और डिस्क ऐक्सेस कैश किया गया. यह आपको इनर-लूप या किसी खास हॉट फ़ंक्शन में दिख सकता है. ​​लाइब्रेरी सिर्फ़ उस कोड को मेज़र कर सकती है जिसे सीधे तौर पर अलग से कॉल किया जा सकता है.

अगर आपके ऐप्लिकेशन को किसी जटिल डेटा स्ट्रक्चर को प्रोसेस करना है या उसमें कोई ऐसा खास एल्गोरिदम है जिसे ऐप्लिकेशन के चलने के दौरान कई बार कॉल किया जाता है, तो ये बेंचमार्किंग के लिए अच्छे उदाहरण हो सकते हैं. अपने यूज़र इंटरफ़ेस (यूआई) के कुछ हिस्सों को भी मेज़र किया जा सकता है. उदाहरण के लिए, RecyclerView आइटम बाइंडिंग की लागत का आकलन किया जा सकता है. इसके अलावा, लेआउट को बड़ा होने में कितना समय लगता है या परफ़ॉर्मेंस के हिसाब से, आपकी View क्लास का लेआउट और मेज़रमेंट पास कितना मुश्किल है, इसका आकलन किया जा सकता है.

हालांकि, यह मेज़र नहीं किया जा सकता कि बेंचमार्क किए गए मामले, उपयोगकर्ता के अनुभव को बेहतर बनाने में किस तरह योगदान देते हैं. कुछ मामलों में, बेंचमार्किंग से यह पता नहीं चलता कि आपने जंक या ऐप्लिकेशन के स्टार्टअप टाइम जैसी समस्या को ठीक किया है या नहीं. इसलिए, Android Profiler का इस्तेमाल करके, सबसे पहले उन समस्याओं का पता लगाना ज़रूरी है. जिस कोड की जांच और ऑप्टिमाइज़ेशन करना है उसे ढूंढने के बाद, बेंचमार्क किए गए लूप को बार-बार आसानी से चलाया जा सकता है. इससे कम नॉइज़ वाले नतीजे मिलते हैं. इससे आपको सुधार के किसी एक पहलू पर फ़ोकस करने में मदद मिलती है.

माइक्रोबेंचमार्क लाइब्रेरी, सिर्फ़ आपके ऐप्लिकेशन के बारे में जानकारी देती है. यह पूरे सिस्टम के बारे में जानकारी नहीं देती. इसलिए, यह ऐप्लिकेशन से जुड़ी स्थितियों की परफ़ॉर्मेंस का विश्लेषण करने के लिए सबसे अच्छा है. यह उन स्थितियों की परफ़ॉर्मेंस का विश्लेषण नहीं कर सकता जो सिस्टम की सामान्य समस्याओं से जुड़ी हो सकती हैं.

मानदंड की लाइब्रेरी की तुलना

मैक्रोबेंचमार्क माइक्रोबेंचमार्क
API वर्शन 23 और उसके बाद के वर्शन 14 और उसके बाद के वर्शन
फ़ंक्शन हाई-लेवल के एंट्री पॉइंट या इंटरैक्शन को मेज़र करें. जैसे, गतिविधि लॉन्च करना या सूची को स्क्रोल करना. अलग-अलग फ़ंक्शन मेज़र करें.
दायरा पूरे ऐप्लिकेशन की जांच, प्रोसेस से बाहर की गई है. सीपीयू के काम की जांच की जा रही है.
स्पीड तेज़ी से विज्ञापन के अलग-अलग वर्शन बनाने की सुविधा. यह एक मिनट से ज़्यादा की हो सकती है. तेज़ी से विज्ञापन के अलग-अलग वर्शन बनाने की सुविधा. आम तौर पर, 10 सेकंड से भी कम समय लगता है.
ट्रेसिंग नतीजों में, प्रोफ़ाइलिंग के ट्रेस शामिल होते हैं. सैंपल इकट्ठा करने और ट्रेस करने का वैकल्पिक तरीका.