কেস স্টাডিজ

একটি সাধারণ R8 আপডেটের মাধ্যমে মনজো পারফরম্যান্স মেট্রিক্স ৩৫% পর্যন্ত বাড়িয়ে তোলে।

২ মিনিটের পাঠ
Ben Weiss
ডেভেলপার সম্পর্ক প্রকৌশলী

মনজো হলো যুক্তরাজ্যের একটি ডিজিটাল ব্যাংক, যার গ্রাহক সংখ্যা ১৫ মিলিয়ন এবং তা ক্রমাগত বাড়ছে। অ্যাপটির পরিধি বাড়ার সাথে সাথে, ইঞ্জিনিয়ারিং টিম অ্যাপ চালু হওয়ার সময়কে উন্নতির জন্য একটি গুরুত্বপূর্ণ ক্ষেত্র হিসেবে চিহ্নিত করে, কিন্তু তারা চিন্তিত ছিল যে এর জন্য তাদের কোডবেসে বড় ধরনের পরিবর্তন আনতে হবে।

R8 অপটিমাইজেশন সম্পূর্ণরূপে সক্রিয় করার মাধ্যমে, মনজো তাদের 'অ্যাপ্লিকেশন নট রেসপন্ডিং' (ANR) হার ৩৫% ব্যাপকভাবে কমাতে সক্ষম হয়েছে। এই সাধারণ পরিবর্তনটি প্রমাণ করেছে যে, কার্যকর অপটিমাইজেশনের জন্য সবসময় জটিল ইঞ্জিনিয়ারিং প্রচেষ্টার প্রয়োজন হয় না।

R8 ফুল মোডের মাধ্যমে ব্যাপক পারফরম্যান্স সাফল্য অর্জন

মনজো R8 ফুল মোডকে একটি সহজ সমাধান হিসেবে চিহ্নিত করেছিল যা চেষ্টা করে দেখা যেতে পারে; এবং এটি কাজও করেছিল, যার ফলে সার্বিকভাবে পারফরম্যান্সের উন্নতি ঘটে:

  • স্টার্টআপের নির্ভরযোগ্যতা: কোল্ড স্টার্ট ৩০%, ওয়ার্ম স্টার্ট ২৪% এবং হট স্টার্ট ১৪% উন্নত হয়েছে।
  • উৎক্ষেপণের গতি: P50-এর উৎক্ষেপণের সময় ১১% এবং P90-এর উৎক্ষেপণের সময় ১২% উন্নত হয়েছে।
  • কার্যকারিতা: সামগ্রিকভাবে অ্যাপের আকার ৯% হ্রাস পেয়েছে।
  • স্থিতিশীলতা: ANR ৩৫% হ্রাস।
AANDDM_Monzo_Quote-1.png
large_AANDDM_Monzo_Quote-2.png

একটি মাত্র পরিবর্তনে অপ্টিমাইজেশন সক্ষম করা

অনেক অ্যান্ড্রয়েড অ্যাপ একটি পুরোনো ডিফল্ট কনফিগারেশন ফাইল ব্যবহার করে, যা R8 অপটিমাইজারের বেশিরভাগ কার্যকারিতা নিষ্ক্রিয় করে রাখে। এই পারফরম্যান্সের উন্নতিগুলো কার্যকর করার জন্য মনজো যে প্রধান পরিবর্তনটি করেছে তা হলো, ডিফল্ট ফাইল 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 আরও বেশি কাজ করতে পারে।

বেসলাইন প্রোফাইলের মাধ্যমে স্ক্রোল পারফরম্যান্স উন্নত করা

ব্যবহারকারীর অভিজ্ঞতা আরও উন্নত করতে, মনজো তাদের মূল ফিডের স্ক্রল এবং রেন্ডারিং পারফরম্যান্সকে বিশেষভাবে লক্ষ্য করে বেসলাইন প্রোফাইল প্রয়োগ করেছে। এই কৌশলটি নিশ্চিত করেছে যে ব্যবহারকারীদের সবচেয়ে সাধারণ কাজগুলো—অ্যাপ খোলা এবং ফিড স্ক্রল করা—সম্পূর্ণরূপে অপ্টিমাইজ করা হয়েছে। রেন্ডারিংয়ের উপর এর প্রভাব ছিল উল্লেখযোগ্য: P90 স্ক্রল পারফরম্যান্স ৭১% দ্রুততর হয়েছে এবং P95 স্ক্রল পারফরম্যান্স ৮৭% উন্নত হয়েছে। এখন অ্যাপটি স্ক্রল করা আগের চেয়ে অনেক বেশি মসৃণ।

সময়ের সাথে সাথে এই উন্নতিগুলো বজায় রাখার জন্য মনজো তাদের রিলিজ প্রক্রিয়ায় এটি অন্তর্ভুক্ত করেছে। নিউমেয়ার ব্যাখ্যা করেন, "আমরা প্রতি কর্মদিবসে (আমাদের নাইটলি বিল্ড চালানোর আগে) বেসলাইন প্রোফাইল তৈরি করি এবং কাজ শেষ হলে সর্বশেষ পরিবর্তনগুলো কমিট করি।"

আধুনিক অ্যান্ড্রয়েড ডেভেলপমেন্টের সাথে তাল মিলিয়ে চলা

মনজোর অভিজ্ঞতা দেখায় যে অ্যান্ড্রয়েড বিল্ড-টুলিং সুপারিশগুলো মেনে চললে কী করা সম্ভব। যেখানে পুরোনো অ্যাপগুলো প্রায়শই জটিল রিফ্লেকশন ব্যবহারে হিমশিম খায়, সেখানে মনজো তাদের ‘কিপ রুলস’ যথাযথভাবে নথিভুক্ত করার মাধ্যমে এই রূপান্তরকে সহজ বলে মনে করেছে। নিউমেয়ার উল্লেখ করেন, "আমরা সবসময় একটি মন্তব্য যোগ করে ব্যাখ্যা করি কেন ‘কিপ রুলস’ চালু রাখা হয়েছে, যাতে আমরা জানতে পারি কখন নিরাপদে নিয়মগুলো সরানো যাবে।"

অন্যান্য দলগুলোর জন্য নিউমেয়ারের পরামর্শ কী? বর্তমান মানদণ্ডের সাথে নিজেদের কর্মপদ্ধতি নিয়মিতভাবে মিলিয়ে দেখুন: "অ্যাপের পারফরম্যান্স বিষয়ে গুগলের সর্বশেষ সুপারিশগুলো দেখুন এবং যাচাই করুন যে আপনারা সব নতুন পরামর্শ মেনে চলছেন কি না।"

শুরু করতে এবং R8 সম্পর্কে আরও জানতে, https://d.android.com/r8-এ যান।

    লিখেছেন:

    পড়তে থাকুন