कंपोज़ फ़ेज़ और परफ़ॉर्मेंस

जब Compose किसी फ़्रेम को अपडेट करता है, तो यह तीन चरणों से गुज़रता है:

  • कंपोज़िशन: कंपोज़िशन से यह तय होता है कि क्या दिखाना है. यह कंपोज़ेबल फ़ंक्शन चलाता है और यूज़र इंटरफ़ेस (यूआई) ट्री बनाता है.
  • लेआउट: Compose, यूज़र इंटरफ़ेस (यूआई) ट्री में मौजूद हर एलिमेंट का साइज़ और प्लेसमेंट तय करता है.
  • ड्राइंग: कंपोज़, अलग-अलग यूज़र इंटरफ़ेस (यूआई) एलिमेंट को असल में रेंडर करता है.

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

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

ज़्यादा जानकारी के लिए, Jetpack Compose की फ़ेज़ गाइड देखें.

सामान्य सिद्धांत

यहां कुछ सामान्य सिद्धांत दिए गए हैं, जिन्हें फ़ॉलो करके परफ़ॉर्मेंस को बेहतर बनाया जा सकता है:

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

अन्य संसाधन