بنچمارک روشی برای بررسی و نظارت بر عملکرد برنامه شماست. میتوانید بهطور منظم بنچمارکها را اجرا کنید تا مشکلات عملکرد را تجزیه و تحلیل و اشکالزدایی کنید و مطمئن شوید که در تغییرات اخیر، پسرفت ایجاد نمیکنید.
اندروید دو کتابخانه و رویکرد بنچمارکگیری برای تحلیل و آزمایش انواع مختلف موقعیتها در برنامه شما ارائه میدهد: Macrobenchmark و Microbenchmark.
ماکروبنچمارک
کتابخانه Macrobenchmark تعاملات کاربر نهایی بزرگتر، مانند شروع به کار، تعامل با رابط کاربری و انیمیشنها را اندازهگیری میکند. این کتابخانه کنترل مستقیمی بر محیط عملکردی که آزمایش میکنید، ارائه میدهد. این کتابخانه به شما امکان میدهد کامپایل را کنترل کنید و به شما امکان میدهد برنامه خود را شروع و متوقف کنید تا مستقیماً شروع به کار واقعی برنامه یا پیمایش را اندازهگیری کنید.
کتابخانه Macrobenchmark رویدادها را تزریق میکند و نتایج را به صورت خارجی از یک برنامه آزمایشی که با تستهای شما ساخته شده است، نظارت میکند. بنابراین، هنگام نوشتن معیارها، شما مستقیماً کد برنامه خود را فراخوانی نمیکنید و در عوض به عنوان یک کاربر در برنامه خود پیمایش میکنید.
میکروبنچمارک
کتابخانه Microbenchmark به شما امکان میدهد کد برنامه را مستقیماً در یک حلقه بنچمارک کنید. این کتابخانه برای اندازهگیری کار CPU طراحی شده است که عملکرد بهترین حالت - مانند گرم شدن درست در زمان (JIT) و دسترسی به دیسک ذخیره شده - را ارزیابی میکند که ممکن است با یک حلقه داخلی یا یک تابع داغ خاص مشاهده کنید. این کتابخانه فقط میتواند کدی را که میتوانید مستقیماً و به صورت جداگانه فراخوانی کنید، اندازهگیری کند.
اگر برنامه شما نیاز به پردازش یک ساختار داده پیچیده دارد، یا الگوریتم محاسباتی سنگینی دارد که چندین بار در طول اجرای برنامه فراخوانی میشود، این موارد میتوانند موارد خوبی برای بنچمارک باشند. همچنین میتوانید بخشهایی از رابط کاربری خود را اندازهگیری کنید. به عنوان مثال، میتوانید هزینه اتصال آیتم RecyclerView ، مدت زمان لازم برای پر کردن یک طرحبندی یا میزان دشواری پاس طرحبندی و اندازهگیری کلاس View خود را از دیدگاه عملکرد اندازهگیری کنید.
با این حال، شما قادر به اندازهگیری چگونگی تأثیر موارد بنچمارکشده بر تجربه کلی کاربر نیستید. در برخی سناریوها، بنچمارک به شما نمیگوید که آیا در حال بهبود یک گلوگاه مانند jank یا زمان شروع برنامه هستید یا خیر. به همین دلیل، شناسایی این گلوگاهها ابتدا با Android Profiler بسیار مهم است. پس از اینکه کدی را که میخواهید بررسی و بهینهسازی کنید پیدا کردید، حلقه بنچمارکشده میتواند به طور مکرر و سریع اجرا شود تا نتایج کمنویزتری ایجاد کند، که به شما امکان میدهد روی یک حوزه بهبود تمرکز کنید.
کتابخانهی Microbenchmark فقط اطلاعات مربوط به برنامهی شما را گزارش میدهد، نه اطلاعات کلی سیستم را. بنابراین، بهترین گزینه برای تجزیه و تحلیل عملکرد موقعیتهای خاص برنامه است، نه مواردی که ممکن است مربوط به مشکلات کلی سیستم باشد.
مقایسه کتابخانه معیار
| ماکروبنچمارک | میکروبنچمارک | |
|---|---|---|
| نسخه API | ۲۳ به بعد | ۱۴ به بعد |
| عملکرد | نقاط ورودی یا تعاملات سطح بالا، مانند شروع فعالیت یا پیمایش یک لیست را اندازهگیری کنید. | عملکردهای فردی را اندازهگیری کنید. |
| محدوده | تست خارج از فرآیند کل برنامه. | آزمایش ضمن فرآیند کار پردازنده. |
| سرعت | سرعت تکرار متوسط. میتواند از یک دقیقه بیشتر شود. | سرعت تکرار بالا. اغلب کمتر از 10 ثانیه. |
| ردیابی | نتایج با ردیابی پروفایل ارائه میشوند. | نمونهبرداری و ردیابی روش اختیاری. |
برای شما توصیه میشود
- توجه: متن لینک زمانی نمایش داده میشود که جاوا اسکریپت غیرفعال باشد.
- ایجاد پروفایلهای پایه {:#creating-profile-rules}
- کتابخانه JankStats
- مروری بر اندازهگیری عملکرد برنامه