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