ऐनिमेशन में रुकावट को डीबग करना

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

ChromeOS पर रेंडर करना

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

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

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

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

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

ARC ग्राफ़िक्स ट्रेसर

ChromeOS में एक प्रोफ़ाइलिंग टूल होता है. इससे पता चलता है कि बफ़र, सिस्टम में कैसे काम कर रहे हैं, मेमोरी स्वैप कब होते हैं, सीपीयू/जीपीयू कितना व्यस्त है, और किसी तय समय पर आपका ऐप्लिकेशन क्या कर रहा है. इस टूल की जानकारी, नीचे दी गई इमेज में दी गई है:

प्रोफ़ाइलर सेट अप करना

प्रोफ़ाइलर का इस्तेमाल करने के लिए, आपके पास M75 या उसके बाद का वर्शन होना चाहिए. बेहतर नतीजे पाने के लिए, Intel डिवाइस का इस्तेमाल करें.

प्रोफ़ाइलर का इस्तेमाल करने से पहले, अपने ऐप्लिकेशन में ट्रेस जोड़ें. आपको जहां भी ट्रैक जोड़ना है वहां अपने कोड में Trace.traceCounter(Trace.TRACE_TAG_GRAPHICS, "Event", <number>); जोड़ें. customTrace प्रीफ़िक्स से शुरू होने वाले Event का इस्तेमाल करें. प्रीफ़िक्स, ट्रैकिंग मैसेज में नहीं दिखता.

प्रोफ़ाइलर सेट अप करने के लिए, यह तरीका अपनाएं:

  1. डेवलपर मोड चालू करें.
  2. Chrome की सेटिंग चालू करें और ARC ग्राफ़िक बफ़र विज़ुअलाइज़ेशन टूल चालू करें.
  3. chrome://arc-graphics-tracing पर जाएं.

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

  1. लगातार रुकने पर रोकें को चुनें.
  2. Android ऐप्लिकेशन चलाएं.
  3. जब Android ऐप्लिकेशन चालू हो और उस पर फ़ोकस हो, तो Control+Shift+G दबाएं.

जब कोई रुकावट आती है, तो ब्राउज़र विंडो पॉप-अप होती है. टाइमलाइन को ज़ूम इन और ज़ूम आउट करने के लिए, W और S बटन का इस्तेमाल करें.