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

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

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

تنظیمات تست

  • انتخاب برنامه: ما این آزمایش‌ها را با استفاده از برنامه متن‌باز Pokedex انجام دادیم و نسخه‌های مبتنی بر View و مبتنی بر Compose آن را مقایسه کردیم. این برنامه برای نمایش سناریوهای دنیای واقعی انتخاب شده بود و توسط تیم Compose توسعه داده نشده بود.
  • تنظیمات سخت‌افزاری: ما بنچمارک‌ها را روی یک گوشی Pixel 3a با اندروید ۱۲ (API 31) و پردازنده‌ها و پردازنده‌های گرافیکی قفل‌شده اجرا کردیم. این دستگاه به عنوان مبنای عملکرد استاندارد برای بنچمارک‌های اصلی استفاده می‌شود.
  • تنظیمات ساخت: معیارها از برنامه‌ی ساخته‌شده در حالت انتشار با فعال بودن R8 استفاده می‌کنند. این برنامه به‌طور کامل از قبل کامپایل شده است تا ناپایداری ناشی از کامپایل درجا (JIT) را کاهش دهد.
  • انتخاب نتیجه : برای اطمینان از تحلیل بدترین حالت، داده‌های پرت شدید و نویزهای غیرنماینده از نتایج معیار حذف شدند. سپس با انتخاب مقادیر میانه داده‌های عملکرد حد بالا، یک خط پایه ایجاد شد.

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

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

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

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

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

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

در PokedexStartupBenchmark ، Compose 1.11 برای TTID با شروع سرد، 2.5٪ کندتر از Views است.

نوشتن ۱.۱۱ برای TTID، ۲.۵٪ کندتر از Views است.
شکل ۱: Compose 1.11 در مقایسه با Views برای TTID.

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

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

در PokedexStartupBenchmark ، نسخه ۱.۱۱ Compose برای TTFD با شروع سرد، ۱۳.۰٪ کندتر از Views است.

برای TTFD، Compose 1.11، 13.0٪ کندتر از Views است.
شکل ۲: Compose 1.11 در مقایسه با Views برای TTFD.

معیارهای قهرمان اسکرول

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

نرخ جنک

دستگاه‌های اندروید با سرعت ۶۰ یا ۱۲۰ فریم در ثانیه (fps) رندر می‌شوند. این بدان معناست که سیستم یک مهلت دقیق (به عنوان مثال، ۱۶.۶ میلی‌ثانیه برای ۶۰ فریم در ثانیه) برای تولید یک فریم دارد. اگر برنامه برای انجام کار خود خیلی طول بکشد، می‌تواند باعث ایجاد یک وقفه قابل مشاهده شود که ما آن را jank می‌نامیم.

در PokedexScrollBenchmark ، Compose و Views از زمان Compose 1.9.0 به عملکرد یکسان 0.21٪ jank دست یافتند. به طور مطلق، 1 از 485 فریم jank بود.

این معیارها نشان می‌دهند که Compose 1.9 و نسخه‌های بعدی آن، در عملکرد Views برای jank هنگام اسکرول کردن، با یکدیگر مطابقت دارند.

از زمان Compose 1.9.0، Compose و Views نرخ پرش یکسانی دارند.
از زمان Compose 1.9.0، Compose و Views نرخ خطای یکسانی دارند.

معیارهای قهرمان را اجرا کنید

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

  1. برای بررسی کد منبع ، راهنمای AndroidX را دنبال کنید.
  2. دستورالعمل‌های موجود در کد منبع Hero Benchmarks را دنبال کنید.

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