केस स्टडी

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

पढ़ने में दो मिनट लगेंगे
बेन वेइस की प्रोफ़ाइल देखें ट्रेसी एग्यमंग की प्रोफ़ाइल देखें
Ben Weiss & Tracy Agyemang

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 पर जाएं

लेखक:
पढ़ना जारी रखें