बेसलाइन प्रोफ़ाइल और स्टार्टअप प्रोफ़ाइल के बीच अंतर

इस दस्तावेज़ में, बेसलाइन प्रोफ़ाइल और स्टार्टअप प्रोफ़ाइल के बीच का अंतर बताया गया है.

BaselineProfileRule टेस्ट से जनरेट हुई, इंसानों के पढ़ने लायक बेसलाइन प्रोफ़ाइल फ़ाइलों को अपने-आप कैप्चर करने के लिए, Baseline Profile Gradle Plugin का इस्तेमाल किया जा सकता है. ऐप्लिकेशन बनाते समय, Android Gradle Plugin (AGP), इन नियमों को बाइनरी फ़ॉर्मैट में कंपाइल करता है. इन्हें baseline.prof के तौर पर Android पैकेज किट (APK) या Android ऐप्लिकेशन बंडल (AAB) में पैकेज किया जाता है. Android रनटाइम (एआरटी), डिवाइस पर कंपाइल करने के लिए इनका असरदार तरीके से इस्तेमाल कर सकता है. हालांकि, इसके लिए ज़रूरी है कि बाइनरी प्रोफ़ाइल का साइज़ 1.5 एमबी से कम हो.

आम तौर पर, प्रोफ़ाइल फ़ाइलों के नाम startup-prof.txt और baseline-prof.txt होते हैं.

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

बेसलाइन प्रोफ़ाइल फ़ाइल में नियमों का एक पूरा सेट होता है. इनका इस्तेमाल ART, अक्सर इस्तेमाल किए जाने वाले कोड पाथ को पहले से कंपाइल करने के लिए करता है. इससे ऐप्लिकेशन के स्टार्टअप को ऑप्टिमाइज़ किया जाता है, इंटरैक्शन जंक कम होता है, और रनटाइम की परफ़ॉर्मेंस बेहतर होती है.

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

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

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

स्टार्टअप प्रोफ़ाइल फ़ाइल में ऐसे नियम होते हैं जिन्हें खास तौर पर आपके ऐप्लिकेशन के स्टार्टअप पाथ के लिए ऑप्टिमाइज़ किया जाता है. कंपाइलेशन के दौरान, D8 और R8, Java बाइटकोड का इस्तेमाल करके Dalvik एक्ज़ीक्यूटेबल (DEX) फ़ाइलें बनाते हैं. D8 और R8, दोनों ही स्टार्टअप प्रोफ़ाइल का इस्तेमाल करते हैं. इससे DEX लेआउट को ऑप्टिमाइज़ किया जाता है. इसके लिए, स्टार्टअप के ज़रूरी कोड को प्राइमरी .dex फ़ाइल में रखा जाता है, ताकि क्लास को तेज़ी से लोड किया जा सके. बेहतर परफ़ॉर्मेंस पाने के लिए, स्टार्टअप कोड को इस मुख्य .dex फ़ाइल में शामिल करना ज़रूरी है. अगर स्टार्टअप कोड का कुल साइज़ बहुत बड़ा है, तो यह बाद के DEX फ़ाइलों में ओवरफ़्लो हो जाता है. इन फ़ाइलों में अक्सर गैर-ज़रूरी क्लास और तरीके शामिल होते हैं. इससे स्टार्टअप की प्रोसेस धीमी हो जाती है.

स्टार्टअप प्रोफ़ाइल, DEX लेआउट को ऑप्टिमाइज़ करने के लिए ज़रूरी मेटाडेटा उपलब्ध कराती है. हालांकि, R8 कोड ऑप्टिमाइज़ेशन इस प्रोसेस में बहुत मददगार हो सकता है. R8, इस्तेमाल न होने वाले कोड को हटाकर और बाइटकोड को छोटा करके, स्टार्टअप लॉजिक के कुल फ़ुटप्रिंट को कम करता है. इस कमी से, यह संभावना बढ़ जाती है कि ज़रूरी कोड, प्राइमरी .dex फ़ाइल में ही रहे. इससे ओवरफ़्लो को रोका जा सकता है. साथ ही, यह पक्का किया जा सकता है कि Android के ज़्यादा वर्शन पर कोड ज़्यादा बेहतर तरीके से काम करे. आपको आम तौर पर, includeInStartupProfile को true पर सिर्फ़ उन टेस्ट के लिए सेट करना चाहिए जो ऐप्लिकेशन के शुरुआती डिसप्ले के लिए ज़रूरी हैं.

ज़्यादा जानकारी के लिए, स्टार्टअप प्रोफ़ाइल की खास जानकारी देखें.