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

مونزو با یک به‌روزرسانی ساده R8، معیارهای عملکرد را تا 35 درصد افزایش می‌دهد

مطالعه ۲ دقیقه‌ای
Ben Weiss
مهندس روابط توسعه‌دهنده

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

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

با حالت کامل R8، عملکرد گسترده را آزاد کنید

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

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

بهبود عملکرد اسکرول با پروفایل‌های پایه

برای بهبود بیشتر تجربه کاربری، مونزو پروفایل‌های پایه (Baseline Profiles) را پیاده‌سازی کرد که به‌طور خاص عملکرد اسکرول و رندرینگ را در فید اصلی خود هدف قرار می‌داد. این استراتژی تضمین می‌کرد که رایج‌ترین سفرهای کاربر - باز کردن برنامه و اسکرول کردن فید - به‌طور کامل بهینه شده باشند. تأثیر آن بر رندرینگ قابل توجه بود: عملکرد اسکرول P90، 71٪ سریع‌تر شد و عملکرد اسکرول P95، 87٪ بهبود یافت. اکنون اسکرول کردن برنامه روان‌تر از قبل است.

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

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

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

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

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

    نوشته شده توسط:

    ادامه مطلب