برنامه خود را محک بزنید
با مجموعهها، منظم بمانید
ذخیره و طبقهبندی محتوا براساس اولویتهای شما.
Benchmarking راهی برای بررسی و نظارت بر عملکرد برنامه شما است. شما می توانید به طور منظم معیارهایی را برای تجزیه و تحلیل و اشکال زدایی مشکلات عملکرد اجرا کنید و به اطمینان حاصل کنید که در تغییرات اخیر رگرسیون ایجاد نمی کنید.
اندروید دو کتابخانه و رویکرد محک را برای تجزیه و تحلیل و آزمایش انواع موقعیتها در برنامه شما ارائه میکند: Macrobenchmark و Microbenchmark.
ماکرو بنچمارک
کتابخانه Macrobenchmark تعاملات بزرگتر کاربر نهایی مانند راه اندازی، تعامل با رابط کاربری و انیمیشن ها را اندازه گیری می کند. این کتابخانه کنترل مستقیمی بر محیط عملکردی که شما در حال آزمایش آن هستید فراهم می کند. این به شما امکان می دهد کامپایل را کنترل کنید و به شما امکان می دهد برنامه خود را شروع و متوقف کنید تا مستقیماً راه اندازی یا پیمایش واقعی برنامه را اندازه گیری کنید.
کتابخانه Macrobenchmark رویدادها را تزریق می کند و نتایج را به صورت خارجی از یک برنامه آزمایشی که با آزمایشات شما ساخته شده است، نظارت می کند. بنابراین، هنگام نوشتن معیارها، کد برنامه خود را مستقیماً صدا نمی زنید و در عوض به عنوان کاربر در برنامه خود پیمایش می کنید.
میکرو بنچمارک
کتابخانه Microbenchmark به شما امکان می دهد کد برنامه را مستقیماً در یک حلقه محک بزنید. این برای اندازهگیری کار CPU طراحی شده است که عملکرد بهترین حالت را ارزیابی میکند - مانند گرم شدن فقط در زمان (JIT) و دسترسیهای حافظه پنهان دیسک - که ممکن است با یک حلقه داخلی یا یک عملکرد داغ خاص ببینید. کتابخانه فقط میتواند کدهایی را اندازهگیری کند که میتوانید مستقیماً به صورت مجزا تماس بگیرید.
اگر برنامه شما نیاز به پردازش یک ساختار داده پیچیده دارد، یا الگوریتم محاسباتی خاصی دارد که در طول اجرای برنامه چندین بار فراخوانی میشود، ممکن است موارد خوبی برای محک زدن باشد. همچنین می توانید بخش هایی از رابط کاربری خود را اندازه گیری کنید. به عنوان مثال، میتوانید هزینه اتصال آیتم RecyclerView
، مدت زمانی که طول میکشد تا یک طرحبندی افزایش یابد، یا از منظر عملکرد چقدر گذر از طرحبندی و اندازهگیری کلاس View
شما نیاز دارد را اندازهگیری کنید.
با این حال، نمیتوانید اندازهگیری کنید که موارد محکشده چگونه به تجربه کلی کاربر کمک میکنند. در برخی سناریوها، بنچمارک به شما نمی گوید که آیا در حال بهبود تنگناهایی مانند زمان راه اندازی jank یا برنامه هستید یا خیر. به همین دلیل، شناسایی این تنگناها ابتدا با پروفایل Android بسیار مهم است. پس از یافتن کدی که میخواهید بررسی و بهینهسازی کنید، حلقه بنچمارکشده میتواند بارها و بارها به روشی سریع و آسانتر اجرا شود تا نتایج نویز کمتری ایجاد کند، که به شما امکان میدهد روی یک حوزه بهبود تمرکز کنید.
کتابخانه Microbenchmark فقط اطلاعات مربوط به برنامه شما را گزارش می دهد، نه در مورد سیستم به طور کلی. بنابراین، بهترین کار در تجزیه و تحلیل عملکرد موقعیتهای خاص برنامه است، نه موقعیتهایی که ممکن است به مشکلات کلی سیستم مربوط شوند.
مقایسه کتابخانه معیار
| ماکرو بنچمارک | میکرو بنچمارک |
---|
نسخه API | 23 به بعد | 14 به بعد |
تابع | نقاط ورود یا تعاملات سطح بالا مانند راه اندازی فعالیت یا پیمایش یک لیست را اندازه گیری کنید. | عملکردهای فردی را اندازه گیری کنید. |
دامنه | تست خارج از فرآیند برنامه کامل. | تست در فرآیند کار CPU. |
سرعت | سرعت تکرار متوسط می تواند بیش از یک دقیقه باشد. | سرعت تکرار سریع اغلب کمتر از 10 ثانیه است. |
ردیابی | نتایج همراه با ردیابی پروفایل است. | روش اختیاری نمونه برداری و ردیابی. |
{% کلمه به کلمه %}
{% آخر کلمه %} برای شما توصیه می شود
{% کلمه به کلمه %} {% آخر کلمه %}
محتوا و نمونه کدها در این صفحه مشمول پروانههای توصیفشده در پروانه محتوا هستند. جاوا و OpenJDK علامتهای تجاری یا علامتهای تجاری ثبتشده Oracle و/یا وابستههای آن هستند.
تاریخ آخرین بهروزرسانی 2025-08-27 بهوقت ساعت هماهنگ جهانی.
[[["درک آسان","easyToUnderstand","thumb-up"],["مشکلم را برطرف کرد","solvedMyProblem","thumb-up"],["غیره","otherUp","thumb-up"]],[["اطلاعاتی که نیاز دارم وجود ندارد","missingTheInformationINeed","thumb-down"],["بیشازحد پیچیده/ مراحل بسیار زیاد","tooComplicatedTooManySteps","thumb-down"],["قدیمی","outOfDate","thumb-down"],["مشکل ترجمه","translationIssue","thumb-down"],["مشکل کد / نمونهها","samplesCodeIssue","thumb-down"],["غیره","otherDown","thumb-down"]],["تاریخ آخرین بهروزرسانی 2025-08-27 بهوقت ساعت هماهنگ جهانی."],[],[],null,["Benchmarking is a way to inspect and monitor the performance of your app. You\ncan regularly run benchmarks to analyze and debug performance problems and help\nensure that you don't introduce regressions in recent changes.\n\nAndroid offers two benchmarking libraries and approaches for analyzing and\ntesting different kinds of situations in your app: Macrobenchmark and\nMicrobenchmark.\n\nMacrobenchmark\n\nThe [Macrobenchmark](/studio/profile/macrobenchmark) library measures larger end-user interactions, such as\nstartup, interacting with the UI, and animations. The library provides direct\ncontrol over the performance environment you're testing. It lets you control\ncompiling and lets you start and stop your app to directly measure actual app\nstartup or scrolling.\n\nThe Macrobenchmark library injects events and monitors results externally from a\ntest app that is built with your tests. Therefore, when writing the benchmarks,\nyou don't call your app code directly and instead navigate within your app as a\nuser.\n\nMicrobenchmark\n\nThe [Microbenchmark](/studio/profile/benchmark) library lets you benchmark app code directly in a loop.\nThis is designed for measuring CPU work that assesses best-case performance---such\nas warmed up Just in Time (JIT) and disk accesses cached---that you might see with\nan inner-loop or a specific hot function. The library can only measure the\ncode that you can call directly in isolation.\n\nIf your app needs to process a complex data structure, or have some specific\ncomputation-heavy algorithm that is called multiple times during the app run,\nthese might be good cases for benchmarking. You can also measure parts of your\nUI. For example, you can measure the cost of the `RecyclerView` item binding,\nhow long it takes to inflate a layout, or how demanding the layout-and-measure\npass of your `View` class is from a performance perspective.\n\nHowever, you aren't able to measure how the benchmarked cases contribute to the\noverall user experience. In some scenarios, benchmarking doesn't tell you if\nyou're improving a bottleneck like jank or app startup time. For this reason,\nit's crucial to identify those bottlenecks first with the [Android Profiler](/studio/profile).\nAfter you find the code you want to investigate and optimize, the benchmarked\nloop can run repeatedly in a quick and easier fashion to create less noisy\nresults, which lets you focus on one area of improvement.\n\nThe Microbenchmark library only reports information about your app, not about\nthe system overall. Therefore, it's best at analyzing performance of situations\nspecific to the app, not ones that might relate to overall system issues.\n\nBenchmark library comparison\n\n| | Macrobenchmark | Microbenchmark |\n|-------------|-----------------------------------------------------------------------------------------------|---------------------------------------------------|\n| API version | 23 and later | 14 and later |\n| Function | Measure high-level entry points or interactions, such as activity launch or scrolling a list. | Measure individual functions. |\n| Scope | Out-of-process test of full app. | In-process test of CPU work. |\n| Speed | Medium iteration speed. It can exceed a minute. | Fast iteration speed. Often less than 10 seconds. |\n| Tracing | Results come with profiling traces. | Optional method sampling and tracing. |\n\nRecommended for you\n\n- Note: link text is displayed when JavaScript is off\n- [Create Baseline Profiles {:#creating-profile-rules}](/topic/performance/baselineprofiles/create-baselineprofile)\n- [JankStats Library](/topic/performance/jankstats)\n- [Overview of measuring app performance](/topic/performance/measuring-performance)"]]