केस स्टडी

Monzo ने R8 का आसान अपडेट करके, परफ़ॉर्मेंस के मेट्रिक को 35% तक बढ़ाया

पढ़ने में 2 मिनट लगेंगे
Ben Weiss
डेवलपर रिलेशंस इंजीनियर

Monzo, ब्रिटेन का एक डिजिटल बैंक है. इसके 1.5 करोड़ ग्राहक हैं और इनकी संख्या लगातार बढ़ रही है. ऐप्लिकेशन के बढ़ने के साथ-साथ, इंजीनियरिंग टीम ने ऐप्लिकेशन के स्टार्टअप टाइम को बेहतर बनाने के लिए एक अहम पहलू के तौर पर पहचाना. हालांकि, उन्हें इस बात की चिंता थी कि इसके लिए, उनके कोडबेस में बड़े बदलाव करने पड़ेंगे.

R8 के ऑप्टिमाइज़ेशन को पूरी तरह से चालू करके, Monzo ने 'ऐप्लिकेशन में कोई समस्या है' (एएनआर) की गड़बड़ी के रेट में 35% की कमी की. इस आसान बदलाव से यह साबित हुआ कि असरदार ऑप्टिमाइज़ेशन के लिए, हमेशा जटिल इंजीनियरिंग की ज़रूरत नहीं होती.

R8 के फ़ुल मोड से, परफ़ॉर्मेंस को बेहतर बनाना

Monzo ने R8 के फ़ुल मोड को एक आसान समाधान के तौर पर पहचाना. यह समाधान काम कर गया और इससे परफ़ॉर्मेंस बेहतर हुई:

  • स्टार्टअप की विश्वसनीयता: कोल्ड स्टार्ट में 30%, वॉर्म स्टार्ट में 24%, और हॉट स्टार्ट में 14% का सुधार हुआ.
  • लॉन्च की स्पीड: P50 लॉन्च टाइम में 11% और P90 लॉन्च टाइम में 12% का सुधार हुआ.
  • एफ़िशिएंसी: ऐप्लिकेशन का कुल साइज़ 9% कम हुआ.
  • स्टेबिलिटी: एएनआर में 35% की कमी हुई.
AANDDM_Monzo_Quote-1.png
large_AANDDM_Monzo_Quote-2.png

सिर्फ़ एक बदलाव करके ऑप्टिमाइज़ेशन चालू करना

कई Android ऐप्लिकेशन, डिफ़ॉल्ट कॉन्फ़िगरेशन की पुरानी फ़ाइल का इस्तेमाल करते हैं. इससे R8 ऑप्टिमाइज़र के ज़्यादातर फ़ंक्शन बंद हो जाते हैं. Monzo ने परफ़ॉर्मेंस को बेहतर बनाने के लिए, proguard-android.txt डिफ़ॉल्ट फ़ाइल को proguard-android-optimize.txt से बदल दिया. इस बदलाव से -dontoptimize निर्देश हट जाता है और R8 अपना काम सही तरीके से कर पाता है.

buildTypes {
  release {
    isMinifyEnabled = true
    isShrinkResources = true
    proguardFiles(
      getDefaultProguardFile("proguard-android-optimize.txt"),
    )
  }
}

यह बदलाव करने के बाद, Keep कॉन्फ़िगरेशन फ़ाइलों को देखना ज़रूरी है. इन फ़ाइलों से R8 को पता चलता है कि आपके कोड के किन हिस्सों को नहीं छेड़ना है. आम तौर पर, ऐसा इसलिए किया जाता है, क्योंकि उन्हें डाइनैमिक तरीके से या बाहरी लाइब्रेरी से कॉल किया जाता है. ज़रूरत न होने पर भी Keep के नियमों को लागू करने से, R8 ज़्यादा काम कर सकता है.

बेसलाइन प्रोफ़ाइलों की मदद से, स्क्रोल करने की परफ़ॉर्मेंस को बेहतर बनाना

उपयोगकर्ता अनुभव को और बेहतर बनाने के लिए, Monzo ने बेसलाइन प्रोफ़ाइलें लागू कीं. खास तौर पर, अपने मुख्य फ़ीड पर स्क्रोल करने और रेंडर करने की परफ़ॉर्मेंस को बेहतर बनाने के लिए. इस रणनीति से यह पक्का किया गया कि उपयोगकर्ता के सबसे सामान्य सफ़र—ऐप्लिकेशन खोलना और फ़ीड को स्क्रोल करना—पूरी तरह से ऑप्टिमाइज़ हो. रेंडरिंग पर इसका काफ़ी असर पड़ा: P90 स्क्रोल परफ़ॉर्मेंस 71% तेज़ हुई और P95 स्क्रोल परफ़ॉर्मेंस में 87% का सुधार हुआ. अब ऐप्लिकेशन को स्क्रोल करना पहले से ज़्यादा आसान है.

Monzo ने इन सुधारों को बनाए रखने के लिए, इन्हें अपनी रिलीज़ प्रोसेस में शामिल किया है. Neumayer बताते हैं, "हम हर कामकाजी दिन (रात के बिल्ड चलाने से पहले) बेसलाइन प्रोफ़ाइल जनरेट करते हैं और पूरी होने के बाद, नए बदलावों को कमिट करते हैं."

Android के मॉडर्न डेवलपमेंट के साथ अप-टू-डेट रहना

Monzo के अनुभव से पता चलता है कि Android के बिल्ड-टूलिंग के सुझावों के साथ अप-टू-डेट रहने पर क्या किया जा सकता है. लेगसी ऐप्लिकेशन को अक्सर जटिल रिफ़्लेक्शन के इस्तेमाल में परेशानी होती है. हालांकि, Monzo ने Keep के नियमों को सही तरीके से दस्तावेज़ में शामिल करके, इस ट्रांज़िशन को आसान बना दिया. Neumayer बताते हैं, "हम हमेशा एक टिप्पणी जोड़ते हैं, जिसमें यह बताया जाता है कि Keep के नियम क्यों लागू किए गए हैं. इससे हमें पता चलता है कि नियमों को कब हटाया जा सकता है."

अन्य टीमों के लिए Neumayer की सलाह? मौजूदा मानकों के हिसाब से, अपनी प्रोसेस की नियमित तौर पर जांच करें: "ऐप्लिकेशन की परफ़ॉर्मेंस के बारे में Google के नए सुझाव देखें और जांच करें कि क्या आपने सभी नए सुझावों को फ़ॉलो किया है."

शुरू करने और R8 के बारे में ज़्यादा जानने के लिए, https://d.android.com/r8 पर जाएं

इसे लिखा है:

पढ़ना जारी रखें