معیارهای Hero مجموعهای از معیارهایی هستند که مسیرهای کاربر برنامه سطح بالا را پوشش میدهند، مانند راهاندازی برنامه یا پیمایش در برنامه متنباز Pokedex.
- معیارهای قهرمان راهاندازی: ردیابی زمان از باز کردن برنامه تا نمایش محتوا.
- معیارهای پیمایش قهرمان: اندازهگیری عملکرد پیمایش یک شبکه تنبل با تصاویر.
راهاندازی آزمایش
- انتخاب برنامه: ما این آزمایشها را بااستفاده از برنامه متنباز Pokedex انجام دادیم و نسخههای مبتنی بر View و مبتنی بر Compose آن را مقایسه کردیم. این برنامه برای نشان دادن سناریوهای دنیای واقعی انتخاب شده است و توسط تیم Compose توسعه نیافته است.
- راهاندازی سختافزار: محکها روی Pixel 6 با Android 17 (سطح میانای برنامهسازی کاربردی ۳۷) با CPU و GPU قفلشده اجرا شدند. پیشاز Compose 1.12، معیارها در Pixel 3a انجام میشد. از Compose نسخه ۱.۱۲، از Pixel 6 بهعنوان مبنای عملکرد استاندارد برای محکهای قهرمان استفاده میشود و Compose نسخه ۱.۱۱ نیز برای مقایسه در Pixel 6 اندازهگیری شده است.
- راهاندازی ساخت: محکها از برنامه ساختهشده در حالت انتشار با R8 فعال استفاده میکنند. برنامه کاملاً ازپیش کامپایل شده است تا ناپایداری ناشی از ترجمه درجا (JIT) کاهش یابد.
- انتخاب نتیجه: برای اطمینان از تحلیل بدترین حالت، دادههای پرت شدید و نوفه غیرمعرف از نتایج محک حذف شدند. سپس با انتخاب مقادیر میانه دادههای عملکرد حد بالا، خط پایهای ایجاد شد.
معیارهای قهرمان استارتآپ
برای اندازهگیری راهاندازی، از PokedexStartupBenchmark استفاده کردیم. PokedexStartupBenchmark
مدت زمانی را که طول میکشد تا برنامه Pokedex برای کاربر
نمایان شود اندازهگیری میکند.
راهاندازی برنامه میتواند در یکی از سه حالت رخ دهد: شروع سرد، شروع گرم، یا شروع داغ. هر وضعیت بر مدت زمانی که طول میکشد تا برنامه برای کاربر قابلمشاهده شود تأثیر میگذارد. در شروع سرد، برنامه از ابتدا شروع میشود. در این محک، عملکرد راهاندازی برنامه را در وضعیت شروع سرد اندازهگیری میکنیم. توصیه میکنیم همیشه برنامه را براساس فرض راهاندازی سرد بهینهسازی کنید. انجام این کار میتواند عملکرد شروعهای گرم و داغ را نیز بهبود بخشد.
سنجههایی که برای اندازهگیری زمان راهاندازی برنامه استفاده میکنیم عبارتاند از زمان لازم برای نمایش اولیه و زمان لازم برای نمایش کامل.
زمان لازم برای نمایش اولیه
«زمان تا نمایش اولیه» (TTID) مدتزمانی را که طول میکشد تا برنامه اولین قاب خود را تولید کند اندازهگیری میکند، ازجمله مقداردهی اولیه فرایند درطول راهاندازی سرد، ایجاد فعالیت درطول راهاندازی سرد یا گرم، و نمایش اولین قاب.
در PokedexStartupBenchmark، Compose 1.13 در شروع سرد به نمایش اولیه در ۱۴۷٫۶۵ میلیثانیه میرسد. این نتیجه در محدوده نویز عادی اجرا به اجرای
Compose نسخه ۱.۱۲.۱ (۱۴۵٫۵۱ میلیثانیه) و Compose نسخه ۱.۱۱.۴ (۱۴۷٫۷۸ میلیثانیه) است و ۳٫۴٪ سریعتر از
Views (۱۵۲٫۸۷ میلیثانیه) است.
| نسخه | زمان لازم برای نمایش اولیه (میلیثانیه) |
|---|---|
| Compose 1.11 | ۱۴۷٫۷۸ |
| Compose 1.12 | ۱۴۵.۵۱ |
| Compose 1.13 | ۱۴۷٫۶۵ |
| بازدیدها | 152.87 |
زمان تا نمایش کامل
«زمان تا نمایش کامل» (TTFD) مدت زمانی را که طول میکشد تا برنامه تعاملی شود اندازهگیری میکند. این یعنی همه دادهها بار شده و ترسیم شده است. برای اطلاعات بیشتر درباره زمان نمایش کامل، به زمان راهاندازی برنامه مراجعه کنید.
در PokedexStartupBenchmark، Compose 1.13 در شروع سرد در ۲۰۰٫۷۹ میلیثانیه به نمایش کامل میرسد. این نتیجه در محدوده نویز عادی اجرا به اجرای
Compose 1.12.1 (۲۰۱٫۹۶ میلیثانیه) و Compose 1.11.4 (۲۰۳٫۳۳ میلیثانیه) است. Views در ۱۸۰٫۳۲ میلیثانیه به نمایش کامل میرسد، بنابراین Compose 1.13 برای TTFD ۱۲٫۵٪ کندتر از Views است.
| نسخه | زمان لازم برای نمایش کامل (میلیثانیه) |
|---|---|
| Compose 1.11 | ۲۰۳٫۳۳ |
| Compose 1.12 | ۲۰۱.۹۶ |
| Compose 1.13 | 202.79 |
| بازدیدها | ۱۸۰.۳۲ |
پیمایش محکهای قهرمان
برای اندازهگیری عملکرد پیمایش، از PokedexScrollBenchmark استفاده کردیم. این معیار عملکرد پیمایش صفحه برنامه Pokedex را برای یک شبکه تنبل با تصاویر اندازهگیری میکند. در این محک، کل صفحه چندین بار پیمایش و پرتاب میشود و موارد جدید بار میشود. عملکرد پیمایش با نرخ پرش اندازهگیری میشود.
نرخ پرش
دستگاههای Android با سرعت حداکثر ۶۰ یا ۱۲۰ فریم در ثانیه (fps) پردازش میکنند. این یعنی سیستم مهلت دقیقی (مثلاً ۱۶٫۶ میلیثانیه برای ۶۰ فریم در ثانیه) برای تولید فریم دارد. اگر برنامه برای انجام کارش بیشازحد طول بکشد، این امر میتواند باعث لکنت قابلمشاهدهای شود که به آن قطع اتصال میگوییم.
در PokedexScrollBenchmark، Compose از Compose 1.9.0 با 0 درصد امتیاز پرش اضافی با عملکرد Views مطابقت دارد. در Pixel 6، «نماها» و
Compose هر دو در Compose نسخههای ۱.۱۱.۴، ۱.۱۲.۱، و ۱.۱۳ دارای ۰٫۰۰٪ پرش هستند.
| نسخه Compose | دستگاه | پرش اضافی نسبت به «بازدیدها» (pp) |
|---|---|---|
| ۱.۳.۳ | Pixel 3a | +۰٫۳۵ |
| ۱.۴.۳ | Pixel 3a | +۰٫۴۱ |
| ۱.۵.۴ | Pixel 3a | +۰٫۴۲ |
| ۱.۶.۸ | Pixel 3a | ۰،۲۱+ |
| ۱.۷.۸ | Pixel 3a | +۰٫۳۶ |
| 1.8.0 | Pixel 3a | +۰٫۳۸ |
| ۱.۹.۰ | Pixel 3a | 0 |
| ۱.۱۰.۰ | Pixel 3a | 0 |
| ۱-۱۱ | Pixel 6 | 0 |
| ۱٫۱۲ | Pixel 6 | 0 |
| ۱٫۱۳ | Pixel 6 | 0 |
اجرای محکزنیهای قهرمان
برای اعتبارسنجی نتایج عملکرد و اجرای محکها بهصورت محلی:
- برای بررسی کد منبع، راهنمای AndroidX را دنبال کنید.
- دستورالعملهای موجود در فایل README کد منبع Hero Benchmarks را دنبال کنید تا
معیار و فایلهای APK هدف (
pokedex-macrobenchmarkوpokedex-macrobenchmark-target) را بسازید، آنها را در دستگاه آزمایشی نصب کنید، و مجموعههایPokedexStartupBenchmarkوPokedexScrollBenchmarkرا بااستفاده ازadbیا «استودیو Android» اجرا کنید.
میتوانید این محکها را در هر دستگاه پشتیبانیشدهای اجرا کنید، مثلاً دستگاه خاصی که برنامهتان را برای آن بهینهسازی میکنید. اما برای اعتبارسنجی نتایج رسمی، از همان راهاندازی سختافزار استفاده کنید.