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

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

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

Macrobenchmark

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

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

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

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

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

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

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

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

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