رفتار Microbenchmark را با آرگومانهای instrumentation زیر پیکربندی کنید. میتوانید این آرگومانها را به پیکربندی Gradle خود اضافه کنید یا هنگام اجرای instrumentation از خط فرمان، مستقیماً اعمال کنید. برای تنظیم این آرگومانها برای همه تستهای اندروید استودیو و خط فرمان، آنها را به testInstrumentationRunnerArguments اضافه کنید:
android {
defaultConfig {
// ...
testInstrumentationRunnerArguments["androidx.benchmark.dryRunMode.enable"] = "true"
}
}
همچنین میتوانید هنگام اجرای بنچمارکها از اندروید استودیو، آرگومانهای ابزار دقیق را تنظیم کنید. برای تغییر آرگومانها، موارد زیر را انجام دهید:
- با کلیک روی ویرایش و انتخاب پیکربندی مورد نظر برای ویرایش، پیکربندی اجرا را ویرایش کنید.

شکل ۱. پیکربندی اجرا را ویرایش کنید. - با کلیک روی در کنار فیلد Instrumentation arguments، آرگومانهای instrumentation را ویرایش کنید.

شکل ۲. استدلال ابزار دقیق را ویرایش کنید. - روی کلیک کنید و آرگومان ابزار دقیق مورد نیاز را اضافه کنید.

شکل ۳. استدلال ابزار دقیق را اضافه کنید.
اگر بنچمارک را از خط فرمان اجرا میکنید، -P android.testInstrumentationRunnerArguments.[name of the argument] استفاده کنید:
./gradlew :benchmark:connectedAndroidTest -P android.testInstrumentationRunnerArguments.androidx.benchmark.profiling.mode=StackSampling اگر مستقیماً دستور am instrument را فراخوانی میکنید (که ممکن است در محیطهای تست CI چنین باشد)، آرگومان را با -e به am instrument ارسال کنید:
adb shell am instrument -e androidx.benchmark.profiling.mode StackSampling -w com.example.macrobenchmark/androidx.benchmark.junit4.AndroidBenchmarkRunnerبرای اطلاعات بیشتر در مورد پیکربندی معیارها در CI، به Benchmarking در CI مراجعه کنید.
androidx.benchmark.cpuEventCounter.enable (آزمایشی)
رویدادهای CPU مشخص شده در androidx.benchmark.cpuEventCounter.events را میشمارد. به دسترسی روت نیاز دارد.
- نوع آرگومان: بولی
- پیشفرض: نادرست
androidx.benchmark.cpuEventCounter.events (آزمایشی)
مشخص میکند که کدام نوع رویدادهای CPU شمارش شوند. برای استفاده از این آرگومان androidx.benchmark.cpuEventCounter.enable باید روی true تنظیم شود.
- نوع آرگومان: فهرستی از رشتهها که با کاما از هم جدا شدهاند
- گزینههای موجود:
-
Instructions -
CPUCycles -
L1DReferences -
L1DMisses -
BranchInstructions -
BranchMisses -
L1IReferences -
L1IMisses
-
- مقادیر پیشفرض:
Instructions،CpuCycles،BranchMisses
androidx.benchmark.dryRunMode.enable
به شما امکان میدهد بنچمارکها را در یک حلقه اجرا کنید تا از عملکرد صحیح آنها اطمینان حاصل کنید.
این یعنی:
- خطاهای پیکربندی اعمال نمیشوند (برای مثال، برای آسانتر کردن اجرای آن با آزمایشهای منظم صحت روی شبیهسازها)
- بنچمارک فقط یک حلقه را اجرا میکند، بدون گرم کردن
- اندازهگیریها و ردیابیها برای کاهش زمان اجرا ثبت نمیشوند
این امر باعث بهینهسازی توان عملیاتی تست و اعتبارسنجی منطق بنچمارک در مقایسه با ساخت و صحت اندازهگیری میشود.
- Argument type: boolean
- پیشفرض:
false
تکرارهای معیار اندروید
تعداد اندازهگیریهای انجامشده را پیکربندی میکند. این تعداد مستقیماً تعداد حلقههای اجرا شده را تعریف نمیکند زیرا هر اندازهگیری معمولاً حلقههای زیادی را اجرا میکند که به صورت پویا بر اساس زمان اجرا در طول گرم شدن تعریف میشوند.
- نوع آرگومان: عدد صحیح
- پیشفرض:
50
androidx.benchmark.killExistingPerfettoRecordings
به طور پیشفرض، Microbenchmark هنگام شروع یک ردیابی جدید، هرگونه ضبط Perfetto (ردیابی سیستم) موجود را از بین میبرد تا تداخل را کاهش دهد. برای غیرفعال کردن این رفتار، false را وارد کنید.
- نوع آرگومان: بولی
- پیشفرض:
true
androidx.benchmark.output.enable
نوشتن فایل JSON نتیجه را در حافظه خارجی فعال میکند.
- نوع آرگومان: بولی
- پیشفرض:
true
حالت پروفایلینگ اندروید ایکس بنچمارک
امکان ثبت فایلهای ردیابی هنگام اجرای بنچمارکها را فراهم میکند. برای گزینههای موجود ، به نمایه یک میکروبنچمارک مراجعه کنید.
توجه داشته باشید که برخی از نسخههای سیستم عامل اندروید از ردیابی متد بدون تحت تأثیر قرار گرفتن اندازهگیریهای بعدی پشتیبانی نمیکنند. Microbenchmark برای جلوگیری از این امر، یک استثنا ایجاد میکند، بنابراین فقط در صورت ایمن بودن، از آرگومان پیشفرض برای ثبت ردیابی متد استفاده کنید. به شماره #316174880 مراجعه کنید.
- نوع آرگومان: رشته
- گزینههای موجود:
-
MethodTracing -
StackSampling -
None
-
- پیشفرضها: نسخه ایمن
MethodTracingکه فقط در صورتی ردیابی متد را ثبت میکند که دستگاه بتواند این کار را بدون تأثیر بر اندازهگیریها انجام دهد.
خطاهای اندروید ایکس بنچمارک را سرکوب میکند
لیستی از خطاها را که با کاما از هم جدا شدهاند، برای تبدیل به هشدار میپذیرد.
- نوع آرگومان: لیستی از رشتهها
- گزینههای موجود:
-
DEBUGGABLE -
LOW-BATTERY -
EMULATOR -
CODE-COVERAGE -
UNLOCKED -
SIMPLEPERF -
ACTIVITY-MISSING
-
- پیشفرض: یک لیست خالی
تابع خروجی تست اضافی
محل ذخیره گزارشهای معیار JSON و نتایج پروفایلینگ در دستگاه را پیکربندی میکند.
- نوع آرگومان: رشته مسیر فایل
- پیشفرض: تست دایرکتوری خارجی APK
شنونده
اگر در حین اجرای بنچمارک، کارهای پسزمینهی نامرتبطی انجام شود، ممکن است نتایج بنچمارک متناقضی دریافت کنید.
برای غیرفعال کردن کار پسزمینه در حین بنچمارک، نوع آرگومان ابزار listener را روی androidx.benchmark.junit4.SideEffectRunListener تنظیم کنید.
- نوع آرگومان: رشته
- گزینههای موجود:
-
androidx.benchmark.junit4.SideEffectRunListener
-
- پیشفرض: مشخص نشده
برای شما توصیه میشود
- توجه: متن لینک زمانی نمایش داده میشود که جاوا اسکریپت غیرفعال باشد.
- آرگومانهای ابزار دقیق Macrobenchmark
- یک میکروبنچمارک را پروفایل کنید
- ایجاد پروفایلهای پایه {:#creating-profile-rules}