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

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

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

Macrobenchmark

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

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

Microbenchmark

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

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

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

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

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

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