ऐनिमेशन में होने वाली गड़बड़ियों को ठीक करना

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

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

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

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

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

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

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

एआरसी ग्राफ़िक्स ट्रेसर

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

ARC ग्राफ़िक्स ट्रेसर का यूज़र इंटरफ़ेस (यूआई), जिसमें सिस्टम प्रोसेस के लिए टाइमलाइन दिखाई गई हैं.
पहली इमेज. ARC ग्राफ़िक्स ट्रेसर का यूज़र इंटरफ़ेस (यूआई), जिसमें सिस्टम प्रोसेस के लिए टाइमलाइन दिखाई गई हैं.

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

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

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

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

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

प्रोफ़ाइलर को चलाएं

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

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