معیارهای قهرمان

معیارهای Hero مجموعه‌ای از معیارهایی هستند که مسیرهای کاربر برنامه سطح بالا را پوشش می‌دهند، مانند راه‌اندازی برنامه یا پیمایش در برنامه متن‌باز Pokedex.

  • معیارهای قهرمان راه‌اندازی: ردیابی زمان از باز کردن برنامه تا نمایش محتوا.
  • معیارهای Scroll hero: اندازه‌گیری عملکرد پیمایش یک شبکه تنبل با تصاویر.

راه‌اندازی آزمایش

  • انتخاب برنامه: ما این آزمایش‌ها را بااستفاده از برنامه متن‌باز Pokedex انجام دادیم و نسخه‌های مبتنی بر View و مبتنی بر Compose آن را مقایسه کردیم. این برنامه برای نشان دادن سناریوهای دنیای واقعی انتخاب شده است و توسط تیم Compose توسعه نیافته است.
  • راه‌اندازی سخت‌افزار: محک‌ها روی Pixel 6 با Android 17 (میانای برنامه‌سازی کاربردی 37) با CPU و GPU قفل‌شده اجرا شدند. پیش‌از Compose 1.12، محک‌ها روی Pixel 3a انجام می‌شد. از Compose نسخه ۱.۱۲، از Pixel 6 به‌عنوان مبنای عملکرد استاندارد برای محک‌های قهرمان استفاده می‌شود.
  • راه‌اندازی ساخت: محک‌ها از برنامه ساخته‌شده در حالت انتشار با R8 فعال استفاده می‌کنند. برنامه کاملاً پیش‌کامپایل شده است تا ناپایداری ناشی از ترجمه درجا (JIT) کاهش یابد.
  • انتخاب نتیجه: برای اطمینان از تحلیل بدترین حالت، داده‌های پرت شدید و نوفه غیرمعرف از نتایج محک حذف شدند. سپس با انتخاب مقادیر میانه داده‌های عملکرد حد بالا، خط پایه‌ای ایجاد شد

معیارهای قهرمان استارت‌آپ

برای اندازه‌گیری راه‌اندازی، از PokedexStartupBenchmark استفاده کردیم. PokedexStartupBenchmark مدت‌زمانی را که طول می‌کشد تا برنامه Pokedex برای کاربر نمایان شود اندازه‌گیری می‌کند.

راه‌اندازی برنامه می‌تواند در یکی از سه حالت رخ دهد: شروع سرد، شروع گرم، یا شروع داغ. هر وضعیت بر مدت زمانی که طول می‌کشد تا برنامه برای کاربر قابل‌مشاهده شود تأثیر می‌گذارد. در شروع سرد، برنامه از ابتدا شروع می‌شود. در این محک، عملکرد راه‌اندازی برنامه را در وضعیت شروع سرد اندازه‌گیری می‌کنیم. توصیه می‌کنیم که همیشه برنامه را براساس فرض راه‌اندازی سرد بهینه‌سازی کنید. انجام این کار می‌تواند عملکرد شروع‌های گرم و داغ را نیز بهبود بخشد.

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

زمان لازم برای نمایش اولیه

«زمان تا نمایش اولیه» (TTID) مدت‌زمانی را که طول می‌کشد تا برنامه اولین قاب خود را تولید کند اندازه‌گیری می‌کند، ازجمله مقداردهی اولیه فرایند درطول راه‌اندازی سرد، ایجاد فعالیت درطول راه‌اندازی سرد یا گرم، و نمایش اولین قاب.

در PokedexStartupBenchmark،‏ Compose 1.12 ازنظر TTID با راه‌اندازی سرد با Views برابری می‌کند.

Compose 1.12 با Views برای TTID برابری می‌کند
شکل ۱: Compose 1.12 درمقایسه با «نماها» برای TTID.

زمان تا نمایش کامل

«زمان تا نمایش کامل» (TTFD) مدت‌زمان لازم برای تعاملی شدن برنامه را اندازه‌گیری می‌کند. این یعنی همه داده‌ها بار شده و ترسیم شده است. برای اطلاعات بیشتر درباره زمان نمایش کامل، به زمان راه‌اندازی برنامه مراجعه کنید.

در PokedexStartupBenchmark،‏ Compose 1.12 تقریباً ۲٪ کندتر از «نماها» برای TTFD با شروع سرد است.

‫Compose 1.12 حدود ۲٪ کندتر از Views برای TTFD است
شکل ۲: Compose 1.12 درمقایسه با «نماها» برای TTFD.

پیمایش محک‌های قهرمان

برای اندازه‌گیری عملکرد پیمایش، از PokedexScrollBenchmark استفاده کردیم. این معیار عملکرد پیمایش صفحه برنامه Pokedex را برای یک شبکه تنبل با تصاویر اندازه‌گیری می‌کند. در این محک، کل صفحه چندین بار پیمایش و پرتاب می‌شود و موارد جدید بار می‌شود. عملکرد پیمایش با نرخ پرش اندازه‌گیری می‌شود.

نرخ پرش

دستگاه‌های Android با سرعت حداکثر ۶۰ یا ۱۲۰ فریم در ثانیه (fps) پردازش می‌کنند. این یعنی سیستم مهلت دقیقی (مثلاً ۱۶٫۶ میلی‌ثانیه برای ۶۰ فریم در ثانیه) برای تولید فریم دارد. اگر برنامه برای انجام کارش بیش‌ازحد طول بکشد، این امر می‌تواند باعث لکنت قابل‌مشاهده‌ای شود که به آن قطع اتصال می‌گوییم.

در PokedexScrollBenchmark، Compose از Compose 1.9.0 با 0 درصد امتیاز پرش اضافی با عملکرد Views مطابقت دارد. در Pixel 6 (آزمایش‌شده با Compose 1.11)، هم Compose و هم Views به نرخ پرش ۰٪ می‌رسند.

از Compose نسخه ۱.۹.۰، Compose با پرش پیمایش «نماها» مطابقت دارد
از Compose نسخه ۱.۹.۰، Compose با پرش پیمایش «نماها» مطابقت دارد.

اجرای محک‌زنی‌های قهرمان

برای اعتبارسنجی نتایج عملکرد و اجرای محک‌ها به‌صورت محلی:

  1. برای بررسی کد منبع، راهنمای AndroidX را دنبال کنید.
  2. دستورالعمل‌های موجود در فایل README کد منبع Hero Benchmarks را دنبال کنید تا معیار و فایل‌های APK هدف (pokedex-macrobenchmark و pokedex-macrobenchmark-target) را بسازید، آن‌ها را در دستگاه آزمایشی نصب کنید، و مجموعه‌های PokedexStartupBenchmark و PokedexScrollBenchmark را بااستفاده از adb یا «استودیو Android» اجرا کنید.

می‌توانید این محک‌ها را در هر دستگاه پشتیبانی‌شده‌ای اجرا کنید، مثلاً دستگاه خاصی که برنامه‌تان را برای آن بهینه‌سازی می‌کنید. اما برای اعتبارسنجی نتایج رسمی، از همان راه‌اندازی سخت‌افزار استفاده کنید.