مطالعات موردی

Monzo با به‌روزرسانی ساده R8 سنجه‌های عملکرد را تا ۳۵٪ تقویت می‌کند

زمان خواندن: ۲ دقیقه
مشاهده نمایه Ben Weiss مشاهده نمایه Tracy Agyemang
‫ Ben Weiss و Tracy Agyemang

Monzo یک بانک دیجیتال در بریتانیا با ۱۵ میلیون مشتری است که درحال رشد است. با مقیاس‌بندی برنامه، تیم مهندسی زمان راه‌اندازی برنامه را به‌عنوان حوزه‌ای حیاتی برای بهبود شناسایی کرد، اما نگران بود که این کار نیازمند تغییرات قابل‌توجهی در پایگاه کد آن‌ها باشد.

با فعال کردن کامل بهینه‌سازی‌های R8،‏ Monzo توانست نرخ «برنامه پاسخ نمی‌دهد» (ANR) خود را به‌میزان قابل‌توجه ۳۵٪ کاهش دهد. این تغییر ساده ثابت کرد که بهینه‌سازی‌های تأثیرگذار همیشه به تلاش‌های مهندسی پیچیده نیاز ندارند.

Unlocking broad performance wins with R8 full mode

Monzo حالت کامل R8 را به‌عنوان راه‌حلی آسان و ارزشمند برای امتحان کردن شناسایی کرد؛ و این راه‌حل کارساز بود و عملکرد را در سراسر پلاتفرم بهبود بخشید:

  • قابلیت اطمینان راه‌اندازی: شروع سرد ۳۰٪، شروع گرم ۲۴٪، و شروع داغ ۱۴٪ بهبود یافته است.
  • سرعت راه‌اندازی: زمان‌های راه‌اندازی P50 به‌میزان ۱۱٪ و زمان‌های راه‌اندازی P90 به‌میزان ۱۲٪ بهبود یافته است.
  • کارایی: اندازه کلی برنامه ۹٪ کاهش یافت.
  • پایداری: کاهش ۳۵ درصدی خطای «برنامه پاسخ نمی‌دهد».
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 می‌تواند کارهای بیشتری انجام دهد.

بهبود عملکرد پیمایش با Baseline Profiles

برای بهبود بیشتر تجربه کاربری، Monzo نمایه‌های پایه را پیاده‌سازی کرد و به‌طور خاص عملکرد پیمایش و پرداز را در فید اصلی خود هدف قرار داد. این استراتژی تضمین کرد که رایج‌ترین مسیرهای کاربر (باز کردن برنامه و پیمایش فید) کاملاً بهینه‌سازی شوند. تأثیر آن بر رندرینگ قابل‌توجه بود: عملکرد پیمایش P90 تا ۷۱٪ سریع‌تر شد و عملکرد پیمایش P95 تا ۸۷٪ بهبود یافت. اکنون پیمایش برنامه روان‌تر از قبل است.

Monzo این را در فرایند انتشار خود گنجانده است تا این بهبودها را درطول زمان حفظ کند. نومایر توضیح می‌دهد: «ما هر روز هفته (قبل‌از اجرای ساخت‌های شبانه) تولید نمایه پایه را راه‌اندازی می‌کنیم و پس‌از تکمیل، آخرین تغییرات را اعمال می‌کنیم.»

همگام شدن با توسعه مدرن Android

تجربه Monzo نشان می‌دهد که وقتی با توصیه‌های ابزار ساخت Android به‌روز می‌مانید، چه چیزی امکان‌پذیر است. درحالی‌که برنامه‌های قدیمی اغلب با استفاده از بازتاب پیچیده مشکل دارند، Monzo با مستندسازی صحیح «قوانین حفظ» خود، انتقال را ساده یافت. نومایر می‌گوید: «ما همیشه نظری اضافه می‌کنیم که توضیح می‌دهد چرا «قوانین حفظ» وجود دارند، بنابراین می‌دانیم چه زمانی می‌توانیم قوانین را برداریم.»

توصیه نومایر برای تیم‌های دیگر چیست؟ به‌طور منظم شیوه‌هایتان را با استانداردهای فعلی مقایسه کنید: «جدیدترین توصیه‌های Google را درباره عملکرد برنامه بررسی کنید و ببینید آیا از همه جدیدترین توصیه‌ها پیروی می‌کنید یا نه.»

برای شروع به کار و کسب اطلاعات بیشتر درباره R8، به https://d.android.com/r8 بروید

نویسنده:
ادامه خواندن