लिखें और मेट्रिक देखें की तुलना करें

Jetpack Compose, यूज़र इंटरफ़ेस (यूआई) को डेवलप करने की प्रोसेस को तेज़ करता है और Android को बेहतर बनाता है डेवलपमेंट. हालांकि, इस बात पर ध्यान दें कि किसी मौजूदा ऐप्लिकेशन में Compose जोड़ने पर, ऐप्लिकेशन के APK का साइज़, बिल्ड, और रनटाइम परफ़ॉर्मेंस.

APK का साइज़ और बिल्ड के समय

यह सेक्शन, APK के साइज़ और बनाए जाने के समय पर पड़ने वाले असर के बारे में जानने के लिए, Sunflower सैंपल ऐप्लिकेशन—ऐसा ऐप्लिकेशन जो सबसे सही तरीकों के बारे में बताता है देखें-आधारित ऐप्लिकेशन को Compose में माइग्रेट करने के बारे में ज़्यादा जानें.

APK का साइज़

अपने प्रोजेक्ट में लाइब्रेरी जोड़ने से इसके APK का साइज़ बढ़ जाता है. ये नतीजे संसाधन और कोड वाले हर प्रोजेक्ट के छोटे किए गए रिलीज़ APK के लिए हैं श्रिंकिंग की सुविधा चालू है, जिसमें R8 फ़ुल मोड का इस्तेमाल किया गया है और APK विश्लेषक का इस्तेमाल करके उसे मापा गया है.

सिर्फ़ देखने के लिए मिला-जुला व्यू और लिखना सिर्फ़ लिखना
डाउनलोड आकार 2,252 केबी 3,034 केबी 2,966 केबी

पहली बार Sunflower में Compose को जोड़ने पर, APK का साइज़ 2,252 केबी से बढ़कर 3,034 केबी—782 केबी की बढ़ोतरी. जनरेट किए गए APK में यूज़र इंटरफ़ेस (यूआई) का बिल्ड शामिल है वीडियो के व्यू और कंपोज़ की सुविधा का इस्तेमाल करें. दूसरी वजहों से इस बढ़ोतरी की संभावना है Sunflower पर डिपेंडेंसी जोड़ दी गई.

वहीं, जब Sunflower को सिर्फ़ Compose के ऐप्लिकेशन पर माइग्रेट किया गया था, तब APK का साइज़ इसका साइज़ 3,034 केबी से घटकर 2,966 केबी हो गया है—यानी 68 केबी की कमी. यह कमी इस वजह से हुई थी इस्तेमाल न होने वाली व्यू डिपेंडेंसी हटाने के लिए, जैसे कि AppCompat और ConstraintLayout.

बिल्ड का समय

Compose की सुविधा जोड़ने पर, आपके ऐप्लिकेशन के बिल्ड का समय Compose कंपाइलर के तौर पर बढ़ जाता है आपके ऐप्लिकेशन में कंपोज़ेबल प्रोसेस को प्रोसेस करता है. निम्नलिखित परिणाम इसका उपयोग करके प्राप्त किए गए थे एक स्टैंडअलोन gradle-profiler टूल है. यह बिल्ड को कई बार लागू करता है, कि डीबग बिल्ड अवधि के लिए एक औसत बिल्ड समय प्राप्त किया जा सकता है सूरजमुखी:

gradle-profiler --benchmark --project-dir . :app:assembleDebug
सिर्फ़ देखने के लिए मिला-जुला व्यू और लिखना सिर्फ़ लिखना
बिल्ड में लगने वाला औसत समय 299.47 मिलीसेकंड 399.09 मिलीसेकंड 342.16 मिलीसेकंड

Sunflower पर पहली बार Compose को जोड़ने पर, ऐप्लिकेशन बनाने में लगने वाला औसत समय 299 हो गया मि॰से॰ से 399 मि॰से॰ तक—100 मि॰से॰ की बढ़ोतरी. यह अवधि Compose कंपाइलर की वजह से है प्रोजेक्ट में तय किए गए कंपोज़ कोड को बदलने के लिए अतिरिक्त काम करना.

इसके उलट, बिल्ड का औसत समय घटकर 342 मि॰से॰ हो गया है, यानी 57 मि॰से॰ की कमी हो गई है, जब सूरजमुखी के Compose पर माइग्रेट करने की प्रोसेस पूरी हो गई. ट्रैफ़िक में गिरावट की वजह कई चीज़ों पर निर्भर करता है, जो एक साथ मिलकर बिल्ड में लगने वाले समय को कम करते हैं. जैसे, डेटा को हटाना बाइंडिंग, ऐसी डिपेंडेंसी जो kapt से KSP का इस्तेमाल करती हैं और अपडेट करना कई चीज़ों पर निर्भर करता है.

खास जानकारी

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

टीम के लिए लिखें में जाकर, इस बारे में और केस स्टडी पढ़ी जा सकती हैं.

रनटाइम की परफ़ॉर्मेंस

इस सेक्शन में, Jetpack Compose में रनटाइम की परफ़ॉर्मेंस से जुड़े विषय शामिल हैं इससे यह समझने में मदद मिलेगी कि Jetpack Compose, व्यू सिस्टम की परफ़ॉर्मेंस की तुलना में कैसी है. और उसे कैसे मापा जा सकता है.

स्मार्ट रीकंपोज़िशन

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

बेसलाइन प्रोफ़ाइल

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

Jetpack Compose की लाइब्रेरी में अपनी बेसलाइन प्रोफ़ाइल है और इसमें आपके साथ ये ऑप्टिमाइज़ेशन, ऐप्लिकेशन में कंपोज़ की सुविधा इस्तेमाल करने पर अपने-आप मिल जाएंगे. हालांकि, ये ऑप्टिमाइज़ेशन केवल Compose लाइब्रेरी में मौजूद कोड पाथ पर असर डालते हैं. इसलिए, हम आपके खाते में बेसलाइन प्रोफ़ाइल जोड़ने का सुझाव दिया जाता है ताकि Compose के बाहर कोड पाथ को कवर किया जा सके.

व्यू सिस्टम से तुलना

Jetpack Compose में व्यू सिस्टम की तुलना में कई सुधार किए गए हैं. ये सुधार नीचे दिए गए सेक्शन में इनके बारे में बताया गया है.

हर चीज़ व्यू का विस्तार करती है

स्क्रीन पर दिखने वाले हर View, जैसे कि TextView, Button या ImageView को इस्तेमाल करने के लिए मेमोरी का बंटवारा, साफ़ तौर पर स्थिति ट्रैक करने, और कई कॉलबैक का इस्तेमाल करें. इसके अलावा, कस्टम View के मालिक को इसकी ज़रूरत होगी का इस्तेमाल करके, साफ़ तौर पर तर्क लागू किया जा सकता है, ताकि रीड्रॉइंग को रोका जा सके. ज़रूरी—उदाहरण के लिए, बार-बार होने वाली डेटा प्रोसेसिंग के लिए.

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

इसके अलावा, Compose में स्मार्ट तरीके से बदलाव करने की सुविधा दी गई है, अगर आपको बदलाव करने की ज़रूरत नहीं है, तो पहले बनाए गए नतीजे को फिर से चलाकर देखें.

एक से ज़्यादा लेआउट पास

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

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

स्टार्टअप की परफ़ॉर्मेंस देखें

कोई खास लेआउट दिखाते समय व्यू सिस्टम को एक्सएमएल लेआउट को बढ़ाने की ज़रूरत होती है पहली बार इस्तेमाल कर रहे हैं. यह कीमत Jetpack Compose में सेव हो जाती है, क्योंकि लेआउट Kotlin में लिखा होता है और आपके ऐप्लिकेशन के बाकी हिस्सों की तरह उसे कंपाइल करता है.

बेंचमार्क कंपोज़

Jetpack Compose 1.0 में इस वर्शन की परफ़ॉर्मेंस में खास अंतर हैं debug और release मोड में एक ऐप्लिकेशन. सही समय के लिए, हमेशा अपने ऐप्लिकेशन की प्रोफ़ाइल बनाते समय, debug की जगह release बिल्ड का इस्तेमाल करें.

यह जानने के लिए कि आपका Jetpack Compose कोड कैसा परफ़ॉर्म कर रहा है, Jetpack Macrobenchmark लाइब्रेरी. इसका तरीका जानने के लिए इसे Jetpack Compose के साथ इस्तेमाल करने के लिए, MacrobenchmarkSample प्रोजेक्ट.

Jetpack Compose की टीम, मैक्रोबेंचमार्क का इस्तेमाल करके किसी भी रिग्रेशन को पकड़ती है ऐसा हो सकता है. उदाहरण के लिए, लेज़ी कॉलम के लिए मानदंड देखें और उसका डैशबोर्ड का इस्तेमाल किया जा सकता है.

प्रोफ़ाइल इंस्टॉल करने के लिए कंपोज़ करें

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