بهینه‌سازی مبتنی بر پروفایل برای شروع اجرای اپلیکیشن‌های اندروید

ما زمان شروع سرد (cold start) اندروید خود را از ۱.۲ ثانیه به ۳۸۰ میلی‌ثانیه کاهش دادیم.

اکثر اپلیکیشن‌ها در اولین اجرا، در کندترین حالت کامپایل اجرا می‌شوند. اندروید زمانی که کاربر برای اولین بار اپلیکیشن شما را نصب می‌کند، از حالت "interpret-only" استفاده می‌کند. این موضوع باعث کند شدن زمان شروع برنامه می‌شود. سیستم تنها در زمان‌های بیکاری (idle time) در مراحل بعدی، کدها را بهینه می‌کند.

شما می‌توانید این مشکل را با استفاده از یک فرآیند سه مرحله‌ای حل کنید.

۱. تولید Baseline Profiles پروفایل‌های پایه (Baseline Profiles) به سیستم می‌گویند که کدام کلاس‌ها باید در زمان نصب کامپایل شوند. از Macrobenchmark برای ایجاد این پروفایل‌ها در خط لوله CI خود استفاده کنید. پروفایل‌های ما تنها ۱۲٪ از متدها را پوشش دادند اما ۹۴٪ از زمان شروع برنامه را مدیریت کردند.

۲. فعال‌سازی DEX Layout Reordering این کار تنها با یک خط کد در فایل properties مربوط به Gradle انجام می‌شود. این دستور به R8 می‌گوید که کلاس‌های مربوط به شروع برنامه را در فایل DEX شما در کنار هم گروه‌بندی کند. این کار باعث کاهش ۳۰ تا ۵۰ درصدی Page Faultها می‌شود. وقتی کلاس‌ها در کنار هم قرار می‌گیرند، سیستم داده‌های بیهوده کمتری را از دیسک بارگذاری می‌کند.

۳. استفاده از Cloud Profiles گوگل Play پروفایل‌ها را از کاربران جمع‌آوری کرده و برای نصب‌های جدید ارسال می‌کند. این کار باعث افزایش مضاعف سرعت شما می‌شود.

نتایج تست‌های ما:

نکات مهم برای گردش کار (workflow) شما:

این لایه‌ها را روی هم قرار دهید تا اپلیکیشن‌های سریع‌تری بسازید.

منبع: https://dev.to/software_mvp-factory/profile-guided-optimization-for-android-app-startup-2i7a