केस स्टडी

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

दो मिनट में पढ़ें
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 ने इस सुविधा को रिलीज़ करने की प्रोसेस में शामिल किया है, ताकि समय के साथ इन सुधारों को बनाए रखा जा सके. न्यूमेयर बताते हैं, "हम हर कामकाजी दिन, बेसलाइन प्रोफ़ाइल जनरेट करते हैं. ऐसा हम हर रात की जाने वाली बिल्ड प्रोसेस शुरू करने से पहले करते हैं. इसके बाद, हम पूरे हो चुके बदलावों को लागू करते हैं."

Modern Android Development के साथ अप-टू-डेट रहना

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

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

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

इसे लिखा है:

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