रेंडरिंग की स्पीड की जांच करना

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

डिवाइस पर डेवलपर के लिए सेटिंग और टूल के बारे में ज़्यादा जानने के लिए, डिवाइस पर डेवलपर के लिए सेटिंग और टूल कॉन्फ़िगर करना लेख पढ़ें. इसमें इन सेटिंग और टूल को चालू करने का तरीका भी बताया गया है.

जीपीयू रेंडरिंग की स्पीड की प्रोफ़ाइल बनाना

प्रोफ़ाइल जीपीयू रेंडरिंग टूल, स्क्रोल करने लायक हिस्टोग्राम के तौर पर यह दिखाता है कि यूज़र इंटरफ़ेस (यूआई) विंडो के फ़्रेम को रेंडर करने में कितना समय लगता है. यह जानकारी, हर फ़्रेम के लिए 16.67 मि॰से॰ के बेंचमार्क के हिसाब से दी जाती है.

कम पावर वाले जीपीयू पर, फ़िल रेट (वह स्पीड जिस पर जीपीयू फ़्रेम बफ़र को भर सकता है) काफ़ी कम हो सकता है. किसी फ़्रेम को ड्रॉ करने के लिए ज़रूरी पिक्सल की संख्या बढ़ने पर, GPU को नई कमांड प्रोसेस करने में ज़्यादा समय लग सकता है. इससे सिस्टम के बाकी हिस्सों को तब तक इंतज़ार करना पड़ता है, जब तक GPU प्रोसेस पूरी नहीं कर लेता.

प्रोफ़ाइलिंग टूल से यह पता लगाया जा सकता है कि पिक्सल बनाने के दौरान, GPU पर कब ज़्यादा लोड पड़ता है या ओवरड्रॉ की वजह से उस पर ज़्यादा दबाव पड़ता है.

प्रोफ़ाइलर चालू करना

शुरू करने से पहले, पक्का करें कि आपके पास Android 4.1 (एपीआई लेवल 16) या इसके बाद के वर्शन वाला डिवाइस हो. साथ ही, आपने डेवलपर के विकल्प चालू किए हों. अपने ऐप्लिकेशन का इस्तेमाल करते समय, डिवाइस के जीपीयू रेंडरिंग की प्रोफ़ाइलिंग शुरू करने के लिए, यह तरीका अपनाएं:

  1. अपने डिवाइस पर, सेटिंग में जाएं और डेवलपर के लिए सेटिंग और टूल पर टैप करें.
  2. मॉनिटरिंग सेक्शन में जाकर, डिवाइस पर चल रहे Android के वर्शन के हिसाब से, प्रोफ़ाइल जीपीयू रेंडरिंग या प्रोफ़ाइल एचडब्ल्यूयूआई रेंडरिंग को चुनें.
  3. प्रोफ़ाइल जीपीयू रेंडरिंग डायलॉग में, स्क्रीन पर बार के तौर पर विकल्प चुनें. इससे आपके डिवाइस की स्क्रीन पर ग्राफ़ ओवरले हो जाएंगे.
  4. वह ऐप्लिकेशन खोलें जिसकी आपको प्रोफ़ाइल बनानी है.

आउटपुट की जांच करना

आंकड़े 1 में दिखाई गई प्रोफ़ाइल जीपीयू रेंडरिंग ग्राफ़ की बड़ी की गई इमेज में, आपको रंगीन सेक्शन दिखेगा. यह सेक्शन, Android 6.0 (एपीआई लेवल 23) पर दिखता है.

पहली इमेज. प्रोफ़ाइल जीपीयू रेंडरिंग का बड़ा किया गया ग्राफ़.

आउटपुट के बारे में यहां कुछ बातें बताई गई हैं:

  • दिखने वाले हर ऐप्लिकेशन के लिए, यह टूल एक ग्राफ़ दिखाता है.
  • हॉरिज़ॉन्टल ऐक्सिस पर मौजूद हर वर्टिकल बार, एक फ़्रेम को दिखाता है. साथ ही, हर वर्टिकल बार की ऊंचाई से पता चलता है कि फ़्रेम को रेंडर होने में कितना समय लगा. यह समय मिलीसेकंड में होता है.
  • हॉरिज़ॉन्टल हरी लाइन, 16.67 मिलीसेकंड दिखाती है. 60 फ़्रेम प्रति सेकंड पाने के लिए, हर फ़्रेम का वर्टिकल बार इस लाइन से नीचे रहना चाहिए. जब भी कोई बार इस लाइन से ऊपर जाता है, तो ऐनिमेशन रुक सकते हैं.
  • यह टूल, 16.67 मिलीसेकंड की सीमा से ज़्यादा समय लेने वाले फ़्रेम को हाइलाइट करता है. इसके लिए, वह बार को चौड़ा और कम पारदर्शी बनाता है.
  • हर बार में रंगीन कॉम्पोनेंट होते हैं, जो रेंडरिंग पाइपलाइन के किसी स्टेज से मैप होते हैं. डिवाइस के एपीआई लेवल के हिसाब से, कॉम्पोनेंट की संख्या अलग-अलग होती है.

यहां दी गई टेबल में, Android 6.0 और इसके बाद के वर्शन पर काम करने वाले डिवाइस का इस्तेमाल करते समय, प्रोफ़ाइलर आउटपुट में वर्टिकल बार के हर सेगमेंट के बारे में बताया गया है.

बार का कॉम्पोनेंटरेंडरिंग स्टेजब्यौरा
बफ़र स्वैप करना इससे पता चलता है कि सीपीयू, जीपीयू के काम पूरा करने का इंतज़ार कर रहा है. अगर यह बार लंबा हो जाता है, तो इसका मतलब है कि ऐप्लिकेशन, जीपीयू पर बहुत ज़्यादा काम कर रहा है.
कमांड से जुड़ी समस्या इससे पता चलता है कि Android के 2D रेंडरर ने OpenGL को डिसप्ले लिस्ट बनाने और फिर से बनाने के लिए कितने समय तक निर्देश दिए. इस बार की ऊंचाई, हर डिसप्ले लिस्ट को एक्ज़ीक्यूट करने में लगने वाले समय के योग के हिसाब से तय होती है. डिसप्ले लिस्ट जितनी ज़्यादा होंगी, लाल रंग का बार उतना ही लंबा होगा.
सिंक करना और अपलोड करना इससे पता चलता है कि बिटमैप की जानकारी को जीपीयू पर अपलोड होने में कितना समय लगता है. बड़े सेगमेंट से पता चलता है कि ऐप्लिकेशन को ज़्यादा ग्राफ़िक लोड करने में काफ़ी समय लग रहा है.
जगह बदलना यह कुकी, ड्राइंग के निर्देश रिकॉर्ड करने में लगने वाले समय को दिखाती है. जैसे, drawLine. Compose में, इस फ़ेज़ में कभी-कभी मेज़र और लेआउट ऑपरेशन शामिल हो सकते हैं. अगर यह बार लंबा है, तो सिस्टम ट्रेस कैप्चर करें. साथ ही, ज़्यादा जानकारी के लिए Perfetto का इस्तेमाल करके इसकी जांच करें.
मेज़रमेंट / लेआउट यह लेआउट फ़ेज़ के दौरान, यूज़र इंटरफ़ेस (यूआई) कॉम्पोनेंट की पोज़िशन तय करने और उनके साइज़ का पता लगाने में लगने वाले समय को दिखाता है. इसमें मेज़रमेंट और प्लेसमेंट मॉडिफ़ायर को लागू करना शामिल है. बड़े सेगमेंट का मतलब है कि इन मॉडिफ़ायर में जटिल कैलकुलेशन की गई हैं या लेआउट ट्री बहुत बड़ा है. इसलिए, बार-बार रीकैलकुलेट करने की ज़रूरत पड़ती है.
इनपुट हैंडलिंग और ऐनिमेशन इससे यह पता चलता है कि ऐनिमेशन एपीआई कॉल का आकलन करने या पॉइंटर इनपुट को हैंडल करने और उसके कॉलबैक में कितना समय लगा. अगर यह सेगमेंट बड़ा है, तो इसका मतलब यह हो सकता है कि कस्टम ऐनिमेशन या इनपुट कॉलबैक को प्रोसेस करने में बहुत ज़्यादा समय लग रहा है. LazyColumn या LazyRow में स्क्रोल करते समय, स्थिति की गिनती और डेटा मैपिंग भी आम तौर पर इसी सेगमेंट के दौरान होती है. साथ ही, इस सेगमेंट में धीमेपन की समस्या का एक आम सोर्स भी है.
अन्य समय / VSync में देरी इससे पता चलता है कि ऐप्लिकेशन, दो फ़्रेम के बीच के समय में ऑपरेशन पूरा करने में कितना समय लेता है. यह यूज़र इंटरफ़ेस (यूआई) थ्रेड में बहुत ज़्यादा प्रोसेसिंग होने का इंडिकेटर हो सकता है. इसे किसी दूसरी थ्रेड पर ट्रांसफ़र किया जा सकता है.

पहली टेबल. Android 6.0 और इसके बाद के वर्शन में कॉम्पोनेंट बार.

प्रोफ़ाइलिंग टूल से मिली जानकारी को समझने के बारे में ज़्यादा जानने के लिए, प्रोफ़ाइल जीपीयू रेंडरिंग की मदद से विश्लेषण करना लेख पढ़ें.