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

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

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

Macrobenchmark

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

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

Microbenchmark

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

बेंचमार्किंग के लिए ये स्थितियां सही हैं: * जब आपके ऐप्लिकेशन को किसी जटिल डेटा स्ट्रक्चर को प्रोसेस करना हो. * जब आपके ऐप्लिकेशन में कोई खास कंप्यूटेशन-हैवी एल्गोरिदम हो, जिसे ऐप्लिकेशन के चलने के दौरान कई बार कॉल किया जाता है.

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

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

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

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

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