Android Calendar की टीम ने बेसलाइन प्रोफ़ाइल की मदद से, ऐप्लिकेशन के स्टार्टअप और जैंक को कैसे बेहतर बनाया है

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

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

क्लाउड प्रोफ़ाइल बनाम बेसलाइन प्रोफ़ाइल

Android Calendar की टीम पहले से ही Cloud Profiles का इस्तेमाल कर रही थी. यह Profile Guided Optimization (PGO) का एक और तरीका है. यह ऐप्लिकेशन के साथ उपयोगकर्ता के रीयल-टाइम इंटरैक्शन पर आधारित होता है. Cloud Profiles और Baseline Profiles की तुलना यहां दी गई है:

प्रोफ़ाइल का टाइप सेट अप करें उपयोगकर्ता के सफ़र शामिल हैं इस सुविधा का सबसे अच्छा इस्तेमाल तब किया जा सकता है, जब उपयोगकर्ता आधार असर का पता चला Android के इस्तेमाल किए जा सकने वाले वर्शन

क्लाउड प्रोफ़ाइलें

डिफ़ॉल्ट रूप से चालू है

उपयोगकर्ता के असल डेटा के आधार पर, अपने-आप चुना जाता है

बड़ा

कुछ दिनों में

Android 9 (एपीआई लेवल 28) और इसके बाद के वर्शन

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

आपने कॉन्फ़िगर किया है

आपने चुना है

सभी साइज़

तुरंत

Android 7 (एपीआई लेवल 24) और इसके बाद के वर्शन

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

इसके अलावा, Android Calendar टीम के लिए यह ज़रूरी था कि वह यह चुन सके कि प्रोफ़ाइल में कौनसे अहम उपयोगकर्ता अनुभव (सीयूजे) शामिल किए जाएं. ऐसा, बेसलाइन प्रोफ़ाइल का इस्तेमाल करके किया जा सकता है.

आम तौर पर, हम बेहतर परफ़ॉर्मेंस के लिए, क्लाउड प्रोफ़ाइल के साथ-साथ बेसलाइन प्रोफ़ाइल का इस्तेमाल करने का सुझाव देते हैं. यह डिफ़ॉल्ट रूप से चालू होती है.

उपयोगकर्ता के सफ़र शामिल हैं

Android Calendar टीम ने अपनी बेसलाइन प्रोफ़ाइलों में दो सीयूजे शामिल किए हैं:

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

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

लागू करना

Android Calendar टीम, Jetpack Macrobenchmark लाइब्रेरी के लिए इंटरनल रैपर का इस्तेमाल करती है. इससे, इंटरनल टूल के साथ आसानी से इंटिग्रेट किया जा सकता है और सामान्य तौर पर स्केलेबिलिटी मिलती है.

यहां शेड्यूल व्यू में ऐप्लिकेशन खोलने के लिए, Macrobenchmark टेस्ट कॉन्फ़िगरेशन दिया गया है:

@Test
fun generateProfile() =
    baselineProfileRule.collect(PACKAGE_NAME, includeInStartupProfile = true) {
        uiAutomator {
            startApp(packageName = PACKAGE_NAME)
            // Verify pre-existing recurring events and tasks are shown.
            // onElement waits for the element by default
            onElement { textAsString() == "Recurring event" }
            onElement { textAsString() == "Recurring task" }

            // Open drawer and verify selected view.
            onElement { contentDescriptionAsString() == "Show Calendar List and Settings drawer" }.click()
            onElement { contentDescriptionAsString() == "Schedule view, Selected" }
        }
    }

इनकी जगह ये डालें:

  • PACKAGE_NAME: उस ऐप्लिकेशन का पैकेज नाम जिसके लिए आपको बेसलाइन प्रोफ़ाइलें जनरेट करनी हैं.

कंट्रोल की गई रिलीज़ का इस्तेमाल करके, असर का आकलन करना

बेसलाइन प्रोफ़ाइलें, उस APK से जुड़ी होती हैं जिसके साथ उन्हें शिप किया जाता है. साथ ही, इन्हें आपका ऐप्लिकेशन शुरू होने से पहले शामिल किया जाता है. इसलिए, इनके असर को समझने के लिए स्टैंडर्ड A/B एक्सपेरिमेंट नहीं चलाया जा सकता. हालांकि, Android Calendar की टीम ने नियंत्रित रिलीज़ का इस्तेमाल करके, इस बदलाव के असर का सटीक आकलन किया. इसमें, नए ऐप्लिकेशन वर्शन को सिर्फ़ कुछ उपयोगकर्ताओं के लिए रिलीज़ किया जाता है. इसके बाद, उनकी तुलना उन उपयोगकर्ताओं से की जाती है जो पिछली रिलीज़ के मिलते-जुलते वर्शन का इस्तेमाल कर रहे हैं.

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

  • ऐप्लिकेशन के इंटरैक्टिव स्टार्टअप में लगने वाले समय (सबसे सामान्य स्थिति) के मीडियन में 775 मि॰से॰ से 644 मि॰से॰ (17%) तक की कमी आई
  • कोल्ड स्टार्ट की मीडियन लेटेन्सी 1,058 मि॰से॰ से घटकर 901 मि॰से॰ (15%) हो गई
  • मीडियन वॉर्म स्टार्ट लेटेंसी 453 मि॰से॰ से घटकर 378 मि॰से॰ (17%) हो गई
  • शेड्यूल और महीने के व्यू में, जंक फ़्रेम रेट के मीडियन में 42 से 60% की कमी आई

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

टूल और सुविधाओं के बारे में ज़्यादा जानने के लिए, यहां दिए गए संसाधन देखें: