معیار
androidx.benchmark
androidx.benchmark.junit4
androidx.benchmark.macro
androidx.benchmark.macro.junit4
| جدیدترین بهروزرسانی | نسخه پایدار | نامزد انتشار | انتشار نسخه بتا | نسخه آلفا |
|---|---|---|---|---|
| ۷ اکتبر ۲۰۲۶ | 1.5.0 | - | - | 1.6.0-alpha01 |
اعلام وابستگیها
برای افزودن وابستگی به «معیار سنجش»، باید مخزن Google Maven را به پروژهتان اضافه کنید. برای کسب اطلاعات بیشتر، مخزن Maven در Google را بخوانید.
Macrobenchmark
برای استفاده از Macrobenchmark
در پروژهتان، وابستگیهای زیر را به فایل build.gradle برای
واحد macrobenchmark اضافه کنید:
شیار
dependencies { androidTestImplementation "androidx.benchmark:benchmark-macro-junit4:1.5.0" }
کاتلین
dependencies { androidTestImplementation("androidx.benchmark:benchmark-macro-junit4:1.5.0") }
ریز محک
برای استفاده از Microbenchmark
در پروژهتان، وابستگیهای زیر را به فایل build.gradle برای
واحد microbenchmark خود اضافه کنید:
شیار
dependencies { androidTestImplementation "androidx.benchmark:benchmark-junit4:1.5.0" } android { ... defaultConfig { ... testInstrumentationRunner "androidx.benchmark.junit4.AndroidBenchmarkRunner" } }
کاتلین
dependencies { androidTestImplementation("androidx.benchmark:benchmark-junit4:1.5.0") } android { ... defaultConfig { ... testInstrumentationRunner = "androidx.benchmark.junit4.AndroidBenchmarkRunner" } }
کتابخانه Microbenchmark همچنین یک پلاگین Gradle را برای استفاده با ماژول microbenchmark ارائه می دهد. این افزونه پیشفرضهای پیکربندی ساخت را برای ماژول تنظیم میکند، نسخه خروجی معیار را برای میزبان تنظیم میکند و وظیفه ./gradlew lockClocks را ارائه میکند.
برای استفاده از این افزونه، خط زیر را در بلوک «plugins» در فایل build.gradle سطح بالای خود قرار دهید:
شیار
plugins { id 'androidx.benchmark' version '1.5.0' apply false }
کاتلین
plugins { id("androidx.benchmark") version "1.5.0" apply false }
سپس افزونه را در فایل build.gradle ماژول بنچمارک خود اعمال کنید
شیار
plugins { id 'androidx.benchmark' }
کاتلین
plugins { id("androidx.benchmark") }
بازخورد
بازخوردتان به بهبود Jetpack کمک میکند. اگر مشکل جدیدی پیدا کردید یا ایدهای برای بهبود این کتابخانه دارید، به ما اطلاع دهید. لطفاً قبلاز ایجاد کتابخانه جدید، مشکلات موجود در این کتابخانه را بررسی کنید. با کلیک کردن روی دکمه ستاره میتوانید رأی خود را به یک مشکل موجود اضافه کنید.
برای اطلاعات بیشتر، مستندات Issue Tracker را ببینید.
نسخه ۱.۶
نسخه 1.6.0-alpha01
۷ اکتبر ۲۰۲۶
androidx.benchmark:benchmark-*:1.6.0-alpha01 منتشر شد. نسخه 1.6.0-alpha01 شامل این تعهدها است.
ویژگیهای جدید
- تکلیف محک
:lockClocksاکنون درصورت دردسترس بودن، بهجای پیادهسازی قبلی فقط ریشه، از حالت عملکرد ثابت استفاده میکند. این یعنی میتوانید ساعتها را در دستگاههای فیزیکی بسیار بیشتری قفل کنید تا نتایج پایداری داشته باشید، بهویژه برای ریزسنجشهای پایدار مفید است. لطفاً مشکلات مربوط به کاهش عملکرد حرارتی را با رفتار جدید گزارش کنید، اگر آن را مشاهده کردید. (I0d032)
تغییرات میانای برنامهسازی کاربردی
-
MemoryProfilingConfigبهExperimentalConfigاضافه شد تا اجرای سنجشهای کلان بتواند در نمایهسازی پشته Perfetto شرکت کند. (Ibc931)
رفع اشکالها
- اشکالی در microbenchmark برطرف شد که در آن ضبط گزارش ردیابی روشها گاهی اوقات برای جلوگیری از ANR با احتیاط بیشازحد نادیده گرفته میشد. (Ifc307)
- رفع مشکل ضبط نمایه مبنا برای فرایندهایی که از الگوی نامگذاری
:<suffix>استفاده نمیکنند. (I512ab) - پیوندهای ردیابی نمایهساز اکنون در بخش جداگانه «ردیابیهای نمایهسازی» در خلاصههای IDE گزارش میشود. (Id639f)
- اشکالی در پاکسازی فایل مجازی که منجر به
Unable to flush profiles for <packagename>میشد برطرف شد. (I48ccc) - همگامسازی در گزارش ردیابی روشهای جاسازیشده در گزارش ردیابی سیستم را اصلاح کنید. Ifd2e33 b/537688349
- افزونه Baseline Profile Gradle -
CollectBaselineProfileTaskبهبود یافت تا از پیدا کردن فایلهایtest-result.pbدر زیرفهرستهای راهنما پشتیبانی کند و سازگاری با پلاتفرم آزمایش داخلی جدید را فعال کند. Id9c488 b/543799367
نسخه 1.5
نسخه ۱.۵.۰
۹ سپتامبر ۲۰۲۶
androidx.benchmark:benchmark-*:1.5.0 منتشر شد. نسخه ۱.۵.۰ حاوی این ثبتها است.
نسخه 1.5.0-rc02
۲۶ اوت ۲۰۲۶
androidx.benchmark:benchmark-*:1.5.0-rc02 منتشر شد. نسخه 1.5.0-rc02 حاوی این ارسالها است.
نسخه 1.5.0-rc01
۱۲ اوت ۲۰۲۶
androidx.benchmark:benchmark-*:1.5.0-rc01 منتشر شد. نسخه 1.5.0-rc01 شامل این تعهدات است.
نسخه 1.5.0-beta01
۲۹ ژوئیه ۲۰۲۶
androidx.benchmark:benchmark-*:1.5.0-beta01 منتشر شد. نسخه 1.5.0-beta01 حاوی این موارد ثبت است.
تغییرات میانای برنامهسازی کاربردی
PerfettoCaptureوPerfettoTraceRuleاکنون میتوانند ردیابیهای درحال پردازش را ضبط کنند و آنها را برای بسته هدف ادغام کنند. (I9a00b، b/497959820)
نسخه 1.5.0-alpha07
۱ ژوئیه ۲۰۲۶
androidx.benchmark:benchmark-*:1.5.0-alpha07 منتشر شد. نسخه 1.5.0-alpha07 شامل این تعهدات است.
تغییرات میانای برنامهسازی کاربردی
- ثبت ردیابی Perfetto سادهشده در دستگاه. (I48810)
- انتقال میاناهای برنامهسازی کاربردی افزونه آزمایشی
TraceProcessor.runServerازandroidx.benchmark:benchmark-macroبهandroidx.benchmark:benchmark-commonو به بستهandroidx.benchmark. این کار استفاده از آنها را در ریزسنجشها در آینده امکانپذیر میکند. (Ie25bb، b/393640753)
رفع اشکالها
- پیادهسازی traceprocessor (و همچنین ضبط «ردیابی Perfetto» غیردستهبندیشده) را بهروزرسانی کنید تا از Perfetto نسخه ۵۶.۰ (I8fb9d) استفاده کند
androidx.benchmark.requireAotوandroidx.benchmark.requireAotرا بهطور پیشفرض روی true تنظیم کنید. این پیشفرضهای ایمنتر تضمین میکنند که کامپایل پیشاز اجرای ریز محکها انجام میشود (بهطور پیشفرض با افزونه محک gradle هنگام استفاده از AGP 8.4+ روشن است)، و اینکهmeasureRepeatedدر رشته اصلی استفاده نمیشود، جایی که میتواند باعث ANR شود. (I1bc3c، b/379115078)- مهلت زمانی کشتن perfetto از ۵ به ۳۰ ثانیه افزایش یافت (فقط برای جلسات Perfetto ضبطشده با محک زدن). وقتی مشکل پیش میآید، گزارش خطای واضحتری اضافه میشود. (If188f، b/435589290)
نسخه 1.5.0-alpha06
۶ مه ۲۰۲۶
androidx.benchmark:benchmark-*:1.5.0-alpha06 منتشر شد. نسخه 1.5.0-alpha06 حاوی این ارسالها است.
رفع اشکالها
- هنگام انتقال فایلها از دایرکتوری برونداد معیار سنجش به دایرکتوری برونداد آزمایش اضافی، محیطهای چندکاربری را بهخوبی مدیریت کنید. (I90da5، b/489358149)
نسخه 1.5.0-alpha05
۲۵ مارس ۲۰۲۶
androidx.benchmark:benchmark-*:1.5.0-alpha05 منتشر شد. نسخه 1.5.0-alpha05 حاوی این ارسالها است.
رفع اشکالها
-
ArtMetricبهروزرسانی شد تا بستههای سطح بالا را درنظر بگیرد، بهویژه هنگام استفاده از AGP/R8 9.1+ یا گزینه سراسری-repackageclassesمهم است. قبلاً،ArtMetricنمیتوانست این بار کلاسی را در اندازهگیریهایartClassLoad...خود تشخیص دهد. (If8a35، b/487402058)
ویژگیهای جدید
- آرگومان ابزار دقیق جدید androidx.benchmark.requireLockedClocks اضافه شده است که امکان فعال کردن بررسی قفل بودن ساعتهای CPU را برای دستگاههای ریشهدار فراهم میکند. (Id82e8، b/468039042)
نسخه 1.5.0-alpha04
۱۱ مارس ۲۰۲۶
androidx.benchmark:benchmark-*:1.5.0-alpha04 منتشر شد. نسخه 1.5.0-alpha04 حاوی این ارسالها است.
تغییرات میانای برنامهسازی کاربردی
-
JvmOverloadsبهPowerMetric.EnergyوPowerMetric.Power(Iac0d0، b/481371562) اضافه شد.
رفع اشکالها
ArtMetricبرای درنظر گرفتن بستههای سطح بالا بهروز شد، بهویژه هنگام استفاده از AGP/R8 نسخه ۹.۱ یا بالاتر، یا گزینه سراسری-repackageclasses. قبلاً،ArtMetricنمیتوانست این بارگذاریهای کلاس را در اندازهگیریهایartClassLoad...خود شناسایی کند. (I207ca، b/487402058)
نسخه 1.5.0-alpha03
۱۱ فوریه ۲۰۲۶
androidx.benchmark:benchmark-*:1.5.0-alpha03 منتشر شد. نسخه 1.5.0-alpha03 حاوی این ارسالها است.
- بهروزرسانی شد تا به UiAutomator 2.4 beta وابسته باشد.
نسخه 1.5.0-alpha02
۲۸ ژانویه ۲۰۲۶
androidx.benchmark:benchmark-*:1.5.0-alpha02 منتشر شد. نسخه 1.5.0-alpha02 شامل این تغییرات است.
رفع اشکالها
افزودن پشتیبانی جزئی برای تولید نمایه مبنا برای ماژولهای چندپلاتفرمی Kotlin. معمولاً وابستگیها به نمایهها را میتوان بااستفاده از پیکربندی
baselineProfileGradle در بلوک وابستگیها تعریف کرد، اما این روش درحالحاضر برای واحدهای KMP کار نمیکند.kotlin { androidLibrary { namespace = "com.example.namespace" compileSdk = 36 } sourceSets { androidMain.dependencies { // THIS DOES NOT WORK // baselineProfile(":yourProducerProject") } } }درعوض، باید وابستگیهایتان را بااستفاده از افزونه
baselineProfileتعریف کنید. (Ie19c4)plugins { id("org.jetbrains.kotlin.multiplatform") id("com.android.kotlin.multiplatform.library") id("androidx.baselineprofile.consumer") } kotlin { androidLibrary { namespace = "com.example.namespace" compileSdk = 36 } sourceSets { androidMain.dependencies { // ... } } } // Define dependencies // This works ! baselineProfile { variants { androidMain { from(project(":yourProducerProject")) } } }
نسخه 1.5.0-alpha01
۱۷ دسامبر ۲۰۲۵
androidx.benchmark:benchmark-*:1.5.0-alpha01 منتشر شد. نسخه 1.5.0-alpha01 حاوی این ارسالها است.
- Macrobenchmark 1.5 از
UiAutomator2.4 برای ساده کردن تعامل با برنامه اندازهگیریشده استفاده میکند. شیء MacrobenchmarkScope اکنون UiAutomatorTestScope را گسترش میدهد که به شما امکان میدهد از میاناهای برنامهسازی کاربردی مدرنUiAutomatorمانندonElement { ... }.click()استفاده کنید. - برای اطلاعات بیشتر درباره
UiAutomatorنسخه ۲.۴، به اسناد مراجعه کنید.
ویژگیهای جدید
- افزایه Gradle «نمایه مبنا» دیگر در AGP 9.0 به
newDsl=falseنیاز ندارد (Iaaac7، b/443311090) - پیکربندی ردیابی را گسترش دهید تا اندازه هسته (مثلاً کوچک/بزرگ) در ردیابیهای سیستم/perfetto ضبطشده در محک گنجانده شود. (I8e397، b/457469959)
تغییرات میانای برنامهسازی کاربردی
- (در UiAutomator) انتظار
startActivityبه انتظار برای پنجره جدید تغییر کرد. (I35da6، b/440021797) -
BlackHoleAPI را در androidx.benchmark پایدار کنید. (I2b67e، b/451749438) -
@JvmOverloadsرا برای سازندههای راحتی برایPerfettoTraceRuleاضافه کنید. (I1510a، b/443763207)
نسخه ۱.۴
نسخه ۱.۴.۱
۱۰ سپتامبر ۲۰۲۵
androidx.benchmark:benchmark-*:1.4.1 منتشر شد. نسخه ۱.۴.۱ حاوی این ثبتها است.
رفع اشکالها
-
perfettoSdkTracing=trueثابت (مثلاً هنگام ردیابی Compose در ریز محک) اگر فرایند هدف ازقبل درحال اجرا بود و StartupMode مشخص نشده بود، آن را ازبین میبرد. (Ib2c1f)
نسخه ۱.۴.۰
۳۰ ژوئیه ۲۰۲۵
androidx.benchmark:benchmark-*:1.4.0 منتشر شد. نسخه 1.4.0 شامل این تعهدات است.
تغییرات مهم از نسخه ۱.۳.۰
Microbenchmark
- تکالیف Gradle
lockClocksوunlockClocksبه پروژههای محک منتقل شدند، بهجای اینکه در سطح بالا باشند تا جداسازی پروژه Gradle رعایت شود. BenchmarkRuleبازسازی شد تا بر روی روالهای همزمان ساخته شود و از رفتارyield()بهتر پشتیبانی کند. این کار باید خطر ANR را درطول اجراهای محک، بهویژه اجراهای طولانی CI، بهطور قابلتوجهی کاهش دهد. توجه: «معیارهای میانای کاربر» باید باmeasureRepeatedOnMainThreadاجرا شود
Macrobenchmark
- راهحل اضافهشده در میانای برنامهسازی کاربردی ۳۴+ برای
CompilationMode.None()عملکرد ناسازگاری خواهد داشت زیرا درستیسنجی ART اکنون تاحدی برنامهها را پساز اولین راهاندازی کامپایل میکند. - ویژگی آزمایشی - Startup Insights میتواند با ارسال
MacrobenchmarkRule(..., experimentalConfig = ExperimentalConfig(StartupInsightsConfig(isEnabled = true)))، برخیاز مشکلات رایج را در Macrobenchmark راهاندازی برجسته کند. - ArtMetric اضافه شد که میتواند برای شناسایی «ترجمه همزمان» و بار کردن کلاس بهینهسازینشده استفاده شود - هر دو برای اعتبارسنجی بهینهسازیهای «نمایه پایه» مفید هستند.
نمایههای مبنا
BaselineProfileRuleاکنون نمایهها را برای برنامههای چندفرایندی جمعآوری میکند.
تغییرات دیگر
- TraceProcessor به کتابخانه خودش (
androidx.benchmark:benchmark-traceprocessor) منتقل شده است تا بتوان از آن در موارد دیگر خارج از سنجههایMacrobenchmarkاستفاده کرد. همچنین با تعریف ServerLifecycleManager خودتان میتوانید آن را در Desktop JVM اجرا کنید.
نسخه 1.4.0-rc01
۱۸ ژوئن ۲۰۲۵
androidx.benchmark:benchmark-*:1.4.0-rc01 منتشر شد. نسخه 1.4.0-rc01 شامل این تعهدات است.
رفع اشکالها
- راهکاری برای تصاویر زمان اجرا اضافه شد که باعث میشد
CompilationMode.None()عملکرد بدترین حالت را پساز اولین تکرار اندازهگیری نکند. متأسفانه این راهکار موقت نیاز به ۵ ثانیه تأخیر دارد تا تصویر زمان اجرا را در ابتدای هر مجموعه سنجش کلان بهصورت عمدی خراب کند (I4a4f1).
نسخه 1.4.0-beta02
۴ ژوئن ۲۰۲۵
androidx.benchmark:benchmark-*:1.4.0-beta02 منتشر شد. نسخه 1.4.0-beta02 شامل این تعهدات است.
تغییرات میانای برنامهسازی کاربردی
-
BaselineProfileConfig.Builderاضافه شد تا فراخوانیBaselineProfileRule.collectWithResults()برای توسعهدهندگان جاوا آسانتر شود. (I94905)
نسخه 1.4.0-beta01
۷ مه ۲۰۲۵
androidx.benchmark:benchmark-*:1.4.0-beta01 منتشر شد. نسخه 1.4.0-beta01 شامل این تعهدات است.
تغییرات میانای برنامهسازی کاربردی
- متغیر سازنده
PerfettoTraceRuleکهPerfettoConfigرا میپذیرد اضافه شد (Ie53ba)
رفع اشکالها
- قالب پیوند اطلاعات آماری راهاندازی
TraceProcessorبهروزرسانی شد تا از افزایه صحیح و جداکننده واضحتر استفاده شود (:کوتاهتر از%3Aاست و هر دو پشتیبانی میشوند) (Ie18ef) - همیشه از توقف اجباری برای بستن فرایندها استفاده کنید، حتی وقتی دستگاه روت شده است و برنامههای سیستم را میبندید. استثناهای فرم را اصلاح میکند:
Expected no stdout/stderr from killall ... No such process. (Idca2c)
همیاری خارجی
- مدیریتکننده استثنای پراکسی برای
TraceProcessorHttpServerاضافه شد (I480f5)
نسخه 1.4.0-alpha11
۹ آوریل ۲۰۲۵
androidx.benchmark:benchmark-*:1.4.0-alpha11 منتشر شد. نسخه 1.4.0-alpha11 حاوی این ارسالها است.
تغییرات میانای برنامهسازی کاربردی
- مهلت زمانی آرگومان
TraceProcessorتغییر کرد: مدت زمان به timeoutMs طولانی برای کاربردپذیری تماسگیرنده Java. (I9fbb5) - سازنده
TraceProcessorرا بهعنوان داخلی علامتگذاری کنید. فراخوانندگان باید ازTraceProcessor.startServerیاTraceProcessor.runServerاستفاده کنند. (Ia8c5b)
رفع اشکالها
- هنگام ازبین بردن برنامه با
MacrobenchmarkScope.killProcess، نتایج فرمان ازبین بردن را اعتبارسنجی کنید تا از خرابی بیصدا و خطای اتمام مهلت جلوگیری شود. (I84555)
بهروزرسانیهای وابستگی
- این کتابخانه اکنون سطح زبان Kotlin 2.0 را هدفیابی میکند و به KGP 2.0.0 یا جدیدتر نیاز دارد. (Idb6b5)
نسخه 1.4.0-alpha10
۲۶ مارس ۲۰۲۵
androidx.benchmark:benchmark-*:1.4.0-alpha10 منتشر شد. نسخه 1.4.0-alpha10 حاوی این موارد ارسال است.
تغییرات میانای برنامهسازی کاربردی
- زمان وقفه پیشفرض برای بارگذاری و پرسمان سرور
TraceProcessorبه ۱۲۰ ثانیه افزایش یافت (قبلاً ۶۰/۳۰ ثانیه بود) و هر دو با یک پارامتر زمان وقفه قابلپیکربندی شدند. (Ifec87)
رفع اشکالها
- چند مشکل که هنگام محکزنی یا ضبط نمایههای برنامه بدون
profileinstallerرخ میداد برطرف شد وBroadcastRecieverاضافه شد. این فقط بر اجرا در دستگاههای با دسترسی ریشهای تأثیر میگذارد. (Ied308)
نسخه 1.4.0-alpha09
۱۲ مارس ۲۰۲۵
androidx.benchmark:benchmark-*:1.4.0-alpha09 منتشر شد. نسخه 1.4.0-alpha09 شامل این تغییرات است.
تغییرات میانای برنامهسازی کاربردی
-
TraceProcessorو «میانای برنامهسازی کاربردی جلسه» با «دستگیرههای» بستنی اضافه شد تا استفاده از چرخههای عمر سفارشی آسانتر شود. این همچنین گامی بهسوی تسهیل استفاده از Coroutine و Java API است. توابع افزونه برایTraceProcessor.runServer {}اکنون بهعنوان آزمایشی علامتگذاری شدهاند، زیرا احتمالاً در آینده منتقل خواهند شد و غیرآزمایشی خواهند شد. (I358b4)
رفع اشکالها
- بهدلیل تغییر در جعبه ابزار
pgrepکه اکنون برای چاپ خط فرمان کامل به-aنیاز دارد، ضبط «نمایه مبنا و معیار» ثابت با API 36 کار نمیکند. (Idc991) - پیکربندی ردیابی پیشفرض را فیلتر کنید تا خطر ازدست رفتن دادهها در ردیابیها در سطوح جدیدتر API کاهش یابد. (I54e8a)
- آرگومان ابزار دقیق آزمایشی
androidx.benchmark.killExistingPerfettoRecordingsاضافه شد که میتواند رویfalseتنظیم شود تا امکان ادامه ضبط ردیابی perfetto ازقبل موجود فراهم شود. بهطور پیشفرض، ضبطهای ردیابی perfetto ازقبل موجود در دستگاه متوقف میشوند تا از تداخل جلوگیری شود. (I02a3c) - فیلد JSON
context.osCodenameAbbreviatedبرای نسخههای سیستمعامل منتشرشده در سطح API 35 و بالاتر، اکنونRELخواهد بود، زیرا پلاتفرم زیرین دیگر از نامهای کد غیرعددی پشتیبانی نمیکند. (Ib17fd) - خرابی در
FrameTimingMetricرا هنگام رخ دادن فریمهای همگامسازیشده برطرف میکند. (I7c6f4، b/394610806) - دیگر فرض نکنید
Choreographer#doFrameبالای چارچوب پشتهای در رشته اصلی برایFrameTimingQueryاست. (Iee0e0، b/340206285)
نسخه 1.4.0-alpha08
۱۲ فوریه ۲۰۲۵
androidx.benchmark:benchmark-*:1.4.0-alpha08 منتشر شد. نسخه 1.4.0-alpha08 شامل این تعهدها است.
تغییرات میانای برنامهسازی کاربردی
-
TraceProcessor.runSession()میانای برنامهسازی افزونه به حالت آزمایشی منتقل شد، زیرا احتمالاً درنهایت به سازندههای عینی در Android منتقل خواهند شد. (Ib0528، b/393640753) - اکنون بیشتر پیادهسازی Startup Insights عمومی/آزمایشی است و به آرتیفکت
TraceProcessorمنتقل میشود.StartupInsightsرا ببینید. (I0aa00) BenchmarkRule.runWithTimingDisabled {}را بهنفعBenchmarkRule.runWithMeasurementDisabled {}منسوخ کنید، که رفتار را واضحتر توصیف میکند - همه سنجهها موقتاً متوقف شدهاند. علاوهبراین، کلاس فوقالعادهMicrobenchmarkScopeرا آشکار کنید زیرا اعلام مجدد تابعrunWithMeasurementDisabledبرای دسترسی آزاد امکانپذیر نیست، چون درونخطی است. (I9e23b، b/389149423، b/149979716)- کتابخانههای محک به Kotlin 2.0 منتقل شدهاند. (I9d1e0)
- متغیر مستقل
androidx.benchmark.startupProfiles.enableابزار دقیق برداشته شد. دیگر مفید نیست، زیرا میتوان آن را باincludeInStartupProfilearg درBaselineProfileRule.collect()کنترل کرد. (I39eb4)
رفع اشکالها
- تعداد توابع داخلی «ریزسنجش» که درطول نمایهسازی فراخوانده میشوند کاهش یافت تا برای نمونه، «ردیابیهای روش» واضحتر شود (Ifaed8)
- اصلاح احتمالی برای ازکارافتادنها: «Failed to stop [
ProcessPid(processName=perfetto, pid=...)]» (توقف [ProcessPid(processName=perfetto, pid=...)] ناموفق بود). اکنون وقتی فرایند Perfetto پسزمینه نتواند قبلاز اجرای محک متوقف شود، Benchmark بهجای ازکار افتادن، پیامی را ثبت میکند. (I37d3e، b/323601788) -
IllegalStateExceptionsبا برچسب «Expectedpm dump-profilesstdout» که بهدلیل بررسی بیشازحد سختگیرانه قالب خروجی ایجاد شده بود برطرف شد. (I358dc)
نسخه 1.4.0-alpha07
۲۹ ژانویه ۲۰۲۵
androidx.benchmark:benchmark-*:1.4.0-alpha07 منتشر شد. نسخه 1.4.0-alpha07 حاوی این ارسالها است.
ویژگیهای جدید
-
BaselineProfileRuleاکنون میانای برنامهسازی کاربردیcollectWithResults(...)را معرفی میکند که شامل فهرستی از مسیرهای نمایههای محاسباتی است. (I056f8) - آرگومان ابزار دقیق
androidx.benchmark.measureRepeatedOnMainThread.throwOnDeadlineاضافه شد که میتوان آن را روی false تنظیم کرد تا رفتار پرتاب در مهلت مقررmeasureRepeatedOnMainThreadبرای آزمایش محلی غیرفعال شود. بهجز در این مورد توصیه نمیشود، زیرا احتمال بروز ANR درطول آزمایشها را افزایش میدهد. (Idbeec، b/353226476)
تغییرات میانای برنامهسازی کاربردی
@JvmOverloadsبه سازندهMicrobenchmarkConfigاضافه شد. (I13fd3)-
BenchmarkRuleبازسازی شد تا روی روتینهای همکار ساخته شود و از عملکرد بهترyield()پشتیبانی کند. این بازسازی کد چندین میانای برنامهسازی کاربردی آزمایشیBenchmarkStateرا حذف کرد، اما درصورت نیاز جایگزینهایی برای آنها ارائه خواهد شد. علاوهبراین،runWithMeasurementDisabledبرای شفافسازی رفتار اضافه شد (همه اندازهگیریها موقتاً متوقف شده است). در آینده،runWithTimingDisabledمنسوخ خواهد شد. (I19837، b/389149423، b/311242861) -
PerfettoTraceProcessorرا بهTraceProcessorدر یک آرتیفکتandroidx.benchmark:benchmark-traceprocessorجدید منتقل کنید و بیشتر میانای برنامهسازی کاربردی آن را غیرآزمایشی کنید. هرTraceMetricسفارشی یا هر چیزی که از ردیابیها میخواند باید به وارد کردنTraceProcessorجدید بهروزرسانی شود. «میانای برنامهسازی کاربردی» جدیدTraceProcessorدقیقاً مثل میانای قدیمی کار میکند، اما یک کتابخانه رابط مستقل (تا حدودی مشابه لایهandroidx.sqliteاز Room) با پیادهسازی ویژه Android است که در macrobenchmark ساخته شده است. از این آرتیفکت جدید میتوان در ماشین مجازی جاوا (JVM) نیز استفاده کرد، اما درحالحاضر باید نسخه خودتان از باینریTraceProcessorرا شروع کنید و درگاهی برای اتصال به آن ارائه دهید. (I3a767، I62563، b/381134564)
رفع اشکالها
- وقتی
MacrobenchmarkScope.startActivityAndWaitنتواند فرایند هدف را راهاندازی کند (احتمالاً بهدلیل خرابی در فرایند هدف)، پیام خطای واضحتری نمایش داده میشود، بهجای پیام مبهمتر «راهاندازی فعالیت تکمیل نشد» (I3539b) - چندین خطای نحوی در نمونههای Kotlin و برجستهسازی نحوی در چندین نمونه Java / build.gradle برطرف شد. (Ib3808)
- Clarified
ArtMetricandCaptureInfoparameter docs. (I96e60)
نسخه 1.4.0-alpha06
۱۱ دسامبر ۲۰۲۴
androidx.benchmark:benchmark-*:1.4.0-alpha06 منتشر شد. نسخه 1.4.0-alpha06 حاوی این موارد ثبت است.
تغییرات میانای برنامهسازی کاربردی
- Removed usage of
@Language("sql")inPerfettoTraceProcessor.Session.query(), as Studio highlighting/parsing is broken. (Idc2fa، b/377733398)
رفع اشکالها
- این کتابخانه اکنون از حاشیهنویسیهای پوچی JSpecify استفاده میکند که از نوع استفاده هستند. توسعهدهندگان Kotlin باید از آرگومان کامپایلر زیر برای اجرای استفاده صحیح استفاده کنند:
-Xjspecify-annotations=strict(این پیشفرض از نسخه ۲.۱.۰ کامپایلر Kotlin شروع میشود). (I46810، b/326456246) - Corrected
ArtMetricto report class load (not init), and improved docs to clarify runtime behavior. (I9915c) - در Android Multiuser (چندکاربره Android)، دستورات را بهعنوان ریشه فقط در دستگاههای روتشده اجرا کنید. (I88b44)
نسخه 1.4.0-alpha05
۱۳ نوامبر ۲۰۲۴
androidx.benchmark:benchmark-*:1.4.0-alpha05 منتشر شد. نسخه 1.4.0-alpha05 شامل این تعهدها است.
رفع اشکالها
- مشکلی در API 34 و بالاتر برطرف شد که در آن
CompilationMode.None()عملکردی ناسازگار داشت که نشاندهنده عملکرد اولیه و بدترین عملکرد نبود. این کار باعث میشود تغییر پلاتفرمی که به وضعیت کامپایل ARTverifyاجازه میدهد برنامهها را کمی پساز اولین راهاندازی بهطور جزئی کامپایل کند (فقط بر بارگیری کلاس تأثیر میگذارد) دور زده شود. (Ie48d0) - مشکلی برطرف شد که در آن ردگیریها (بهویژه ردگیریهای کوتاه) میتوانستند ضبط شوند و بهدلیل کوتاه شدن نام فرایند در ردگیری Perfetto، اندازهگیری از «سنجههای Macrobenchmark» داخلی را گزارش نمیکردند. اکنون macrobenchmark با جستجوی نام بسته کوتاهشده در همه پُرسمانهای داخلی، علاوهبر نام بسته موردانتظار، این مشکل را حل میکند. توجه داشته باشید که پیادهسازیهای سفارشی
TraceMetricیا دیگر فراخوانندگان مستقیمPerfettoSession.queryمیتوانند با تغییرprocess.name LIKE "$packageName"در پُرسمان Perfetto بهجای(process.name LIKE "$packageName" OR process.name LIKE "$(packageName.takeLast(15))")، همین رفتار را پیادهسازی کنند. (I5bf01، b/377565760)
نسخه 1.4.0-alpha04
۳۰ اکتبر ۲۰۲۴
androidx.benchmark:benchmark-*:1.4.0-alpha04 منتشر شد. نسخه 1.4.0-alpha04 حاوی این ارسالها است.
ویژگیهای جدید
- (آزمایشی) تولید «نمایه پایه» و سنجش عملکرد در برنامههای نصبشده برای کاربر ثانویه را فعال کنید، برای مثال هر برنامهای در دستگاههای Android Auto بدون نمایشگر. این پشتیبانی در برخی سناریوها آزمایش شده است، اما اگر برای شما کار نمیکند، با ارسال اشکال به ما اطلاع دهید. (I9fcbe، b/356684617، b/373641155)
رفع اشکالها
- اکنون
isProfileableهمیشه در ساختهای معیار لغو میشود وisDebuggableنیز اکنون همیشه در ساختهای معیار وnonMinified(ضبط نمایهپایه) لغو میشود. (I487fa، b/369213505) - مشکل تشخیص تدوین در برخیاز دستگاههای فیزیکی قبلاز API 28 برطرف شد - بر json
context.compilationModeو همچنین عملکردandroidx.benchmark.requireAot=true(که دیگر بهاشتباه استثنا ایجاد نمیکند) تأثیر میگذارد (Ic3e08، b/374362482) - In
CpuEventCountermetrics, throw if invalid measurements are observed (e.g. instructions/cpucycles==0) (I8c503)
نسخه 1.4.0-alpha03
۱۶ اکتبر ۲۰۲۴
androidx.benchmark:benchmark-*:1.4.0-alpha03 منتشر شد. نسخه 1.4.0-alpha03 حاوی این موارد ارسال است.
تغییرات میانای برنامهسازی کاربردی
- Macrobenchmark:
ArtMetricرا اضافه میکند که میتوان از آن برای بررسی پوشش نمایه یا عملکرد کلی Android RunTime استفاده کرد. تعداد و مدت کل JIT، مقدار اولیه کلاس (درصورت وجود)، و درستیسنجی کلاس را ضبط میکند. علاوهبراین،CaptureInfoرا تغییر میدهد تا نسخه اصلی اختیاری ART را با پیشفرض اضافه کند. (I930f7) coefficientOfVariationرا به خروجی JSON محک اضافه کنید تا پایداری را در اجرای محک مشخصی نشان دهد. (Ib14ea)
رفع اشکالها
-
CollectBaselineProfileTaskوقتی دستگاه AVD فاصله دارد برطرف شد. (Ia0225, b/371642809) - اصلاح احتمالی برای خطاهای ناشی از استثناهای
StartupMode.COLD:Package <packagename> must not be running prior to cold start!. اکنون،MacrobenchmarkScope.killProcess()(ازجمله موردی که قبلاز هر تکرار اجرا میشود و برای پیادهسازی رفتارStartupMode.COLDاستفاده میشود) منتظر میماند تا تأیید کند که همه فرایندهای برنامه متوقف شدهاند. (I60aa6، b/351582215) - مشکل نمایش خطای UNLOCKED_ در برخی شبیهسازهای ریشهدار برطرف شد. (Ic5117)
- این کتابخانه اکنون از JSpecify nullness annotations استفاده میکند که نوع استفاده است. توسعهدهندگان Kotlin باید از آرگومان کامپایلر زیر برای اعمال استفاده صحیح استفاده کنند:
-Xjspecify-annotations=strict(این آرگومان از نسخه ۲.۱.۰ کامپایلر Kotlin بهصورت پیشفرض شروع میشود). (I7104f، b/326456246)
نسخه 1.4.0-alpha02
۲ اکتبر ۲۰۲۴
androidx.benchmark:benchmark-*:1.4.0-alpha02 منتشر شد. نسخه 1.4.0-alpha02 شامل این تغییرات است.
تغییرات میانای برنامهسازی کاربردی
- تکالیف Gradle
lockClocksوunlockClocksبه پروژههای محک منتقل شدند، بهجای اینکه در سطح بالا دردسترس باشند. این تغییر ضروری بود زیرا متأسفانه بدون ازهم گسستن جداسازی پروژه، راهی برای ثبت این موارد بهعنوان کنشهای سطح بالا وجود ندارد. (I02b8f، b/363325823)
رفع اشکالها
BaselineProfileRuleاکنون نمایهها را برای برنامههای چندفرایندی با علامت دادن به هر فرایند درحال اجرا در پایان بلوک برای تخلیه نمایهها جمعآوری میکند. اگر کامپایل مبتنی بر نمایه هرگز نتواند فرایندی را برای همهفرستی پیدا کند، کامپایل ناموفق خواهد بود، زیرا انتظار نمیرود دادههای نمایه در آن وجود داشته باشد. علاوهبراین، یک آرگومان ابزار دقیق برای کنترل مدت انتظار تخلیه اضافه شد:androidx.benchmark.saveProfileWaitMillis(I0f519، b/366231469)- از Benchmark
1.3.2: Firebase Test Lab (FTL) رفع شد که نمیتوانست فایلهای نتایج Baseline Profile یا Macrobenchmark را از Baseline Profile Gradle Plugin دریافت کند. (I2f678, b/285187547)
برای استفاده از FTL، افزایه را در بلوک افزایه با موارد زیر در ماژول نمایه مبنا اعمال کنید:
plugins {
...
id("com.google.firebase.testlab")
}
و سپس Firebase Test Lab را با موارد زیر پیکربندی کنید:
firebaseTestLab {
// Credentials for FTL service
serviceAccountCredentials.set(file("credentials.json"))
// Creates one or more managed devices to run the tests on.
managedDevices {
"ftlDeviceShiba34" {
device = "shiba"
apiLevel = 34
}
}
// Ensures the baseline profile is pulled from the device.
// Note that this will be automated as well later with aosp/3272935.
testOptions {
results {
directoriesToPull.addAll("/storage/emulated/0/Android/media/${android.namespace}")
}
}
}
همچنین دستگاه FTL ایجادشده باید به افزونه نمایه مبنا اضافه شود:
baselineProfile {
managedDevices += "ftlDeviceShiba34"
useConnectedDevices = false
}
نسخه 1.4.0-alpha01
۱۸ سپتامبر ۲۰۲۴
androidx.benchmark:benchmark-*:1.4.0-alpha01 منتشر شد. نسخه 1.4.0-alpha01 شامل این تعهدات است.
ویژگی جدید - اطلاعات آماری راهاندازی برنامه
- نسخه اولیه اطلاعات آماری راهاندازی برنامه را میتوان در Macrobenchmark فعال کرد. (09fae38)
برای فعال کردن در معیار شروع به کار:
@Test
fun startup {
macrobenchmarkRule.measureRepeated(
…
packageName = "com.example.my.application.id"
metrics = listOf(StartupTimingMetric()),
iterations = 5,
startupMode = StartupMode.COLD,
compilationMode = CompilationMode.None(),
experimentalConfig = ExperimentalConfig(startupInsightsConfig = StartupInsightsConfig(isEnabled = true))
) {
scope.startActivityAndWait(...)
}
}
سپس اجرای معیار شروع به کار، ردیابی را برای یافتن مشکلات رایج تجزیهوتحلیل میکند و آنها را پساز سنجهها در برونداد آزمایش «استودیو» در برگه معیار چاپ میکند، برای نمونه:
StartupBenchmark_startup[startup=COLD,compilationMode=None]
├── Metrics
│ ├── timeToFullDisplayMs min 1,147.2, median 1,208.8, max 1,307.4
│ └── timeToInitialDisplayMs min 1,147.2, median 1,208.8, max 1,307.4
├── App Startup Insights
│ ├── App in debuggable mode (expected: false)
│ │ └── seen in iterations: 0(true) 1(true) 2(true) 3(true) 4(true) 5(true) 6(true) 7(true) 8(true) 9(true)
│ ├── Potential CPU contention with another process (expected: < 100000000ns)
│ │ └── seen in iterations: 4(105022546ns)
│ └── Main Thread - Binder transactions blocked (expected: false)
│ └── seen in iterations: 7(true)
└── Traces
└── Iteration 0 1 2 3 4 5 6 7 8 9
این ویژگی هنوز درحال توسعه است و بهبودهایی در مستندات و قابلیت گسترش آن در آینده اعمال خواهد شد، اما از بازخوردها استقبال میکنیم.
ویژگیهای جدید
- دارایی gradle
androidx.baselineprofile.suppressWarningsبرای سرکوب کردن همه هشدارهای نمایه پایه اضافه شد. (314153a) - سنجههای Microbench اکنون در ردگیریهای Perfetto بهعنوان شمارنده نمایش داده میشوند. (3214854)
- افزودن اسکریپتهای آزمایشی برای غیرفعال کردن jit (نیاز به بازراهاندازی ریشه / زمان اجرا دارد)، و بازنشانی وضعیت عملکرد/آزمایش دستگاه. اینها درحالحاضر بهعنوان تکالیف Gradle منتشر نشدهاند. (7c3732b)
- آرگومان معیار سنجش اضافه شد تا هنگام اجرا در شبیهساز، از آزمایشها صرفنظر شود. وقتی ساخت
automaticGenerationDuringفعال باشد، محکها تولید نمایه مبنا را نیز راهاندازی میکنند. اگر از شبیهسازها استفاده شود، این کار ناموفق خواهد بود. با متغیر مستقل جدیدskipBenchmarksOnEmulatorمیتوانیم بهجای آن از آزمایش صرفنظر کنیم. (0c2ddcd) - تغییر منطق فعالسازی رویداد perf برای اجرا در میانای برنامهسازی کاربردی ۲۳+ (۲۵۵۰۴۸)
تغییرات میانای برنامهسازی کاربردی
- متغیر مستقل آزمایشی موجود
PerfettoConfigبهMacrobenchmarkRule.measureRepeated()به شیء جدیدExperimentalConfigمنتقل شد.
رفع اشکالها
- افزایش تعداد تلاش مجدد
lockClocks.sh(99e9dac) - اگر نوع ساخت
nonMinifiedو معیار وجود دارد، آنها را ایجاد نکنید. بهدلیل وجود اشکال، حتی اگر انواع ساختnonMinifiedو معیار وجود داشتند، دوباره ایجاد میشدند. (e75f0a5) - نادیده گرفتن برشهای غیرپایانی از نتایج
TraceSectionMetric. (a927d20) - بررسی بهبودیافته شبیهساز برای درنظر گرفتن پیشوند
sdk_. (1587de8) - بستههای غیرفعال در
FrameTimingGfxInfoMetricبهعنوان پاکشده درنظر گرفته میشوند. (35cc79c) - رفع مشکل
androidx.benchmark.cpuEventCounterکه مقادیر معیوب برای رویدادهای غیردستوری تولید میکرد. (06edd59) -
resumeTiming/runWithTimingDisabledرا اصلاح کنید تا ترتیب اولویت معیار را رعایت کند و تأثیر توقف/ازسرگیری معیار با اولویت پایینتر را بر نتایج معیار با اولویت بالاتر بهطور قابلتوجهی کاهش دهد. برای مثال، اگر از شمارندههای cpu perf ازطریق آرگومان ابزار دقیقcpuEventCounter.enableاستفاده شود، هنگام وقوع توقف/ازسرگیری، timeNs دیگر بهطور قابلتوجهی کاهش نمییابد. (5de0968)
نسخه ۱.۳
نسخه ۱.۳.۴
۲۶ مارس ۲۰۲۵
androidx.benchmark:benchmark-*:1.3.4 منتشر شد. نسخه ۱.۳.۴ شامل این تعهدات است.
رفع اشکالها
- ناسازگاریهای «جداسازی پروژه Gradle» در «افزایه Gradle خط مبنای محک» برطرف شد. (b/404523257)
نسخه ۱.۳.۳
۱۶ اکتبر ۲۰۲۴
androidx.benchmark:benchmark-*:1.3.3 منتشر شد. نسخه ۱.۳.۳ حاوی این ثبتها است.
رفع اشکالها
- رفع مشکل
CollectBaselineProfileTaskوقتی دستگاه AVD در آن فاصله دارد (Ia0225، b/371642809)
نسخه ۱.۳.۲
۲ اکتبر ۲۰۲۴
androidx.benchmark:benchmark-*:1.3.2 منتشر شد. نسخه ۱.۳.۲ حاوی این ارسالها است.
رفع اشکالها
- مشکل Firebase Test Lab (FTL) که نمیتوانست فایلهای نتایج Baseline Profile یا Macrobenchmark را از Baseline Profile Gradle Plugin دریافت کند برطرف شد. (I2f678, b/285187547)
برای استفاده از FTL، افزایه را در بلوک افزایه با موارد زیر در ماژول نمایه مبنا اعمال کنید:
plugins {
...
id("com.google.firebase.testlab")
}
و سپس Firebase Test Lab را با موارد زیر پیکربندی کنید:
firebaseTestLab {
// Credentials for FTL service
serviceAccountCredentials.set(file("credentials.json"))
// Creates one or more managed devices to run the tests on.
managedDevices {
"ftlDeviceShiba34" {
device = "shiba"
apiLevel = 34
}
}
// Ensures the baseline profile is pulled from the device.
// Note that this will be automated as well later with aosp/3272935.
testOptions {
results {
directoriesToPull.addAll("/storage/emulated/0/Android/media/${android.namespace}")
}
}
}
همچنین دستگاه FTL ایجادشده باید به افزونه نمایه مبنا اضافه شود:
baselineProfile {
managedDevices += "ftlDeviceShiba34"
useConnectedDevices = false
}
نسخه ۱.۳.۱
۱۸ سپتامبر ۲۰۲۴
androidx.benchmark:benchmark-*:1.3.1 منتشر شد. نسخه ۱.۳.۱ حاوی این ثبتها است.
رفع اشکالها
- دارایی Gradle
androidx.baselineprofile.suppressWarningsبرای سرکوب کردن همه هشدارهای نمایه پایه اضافه شد (I7c36e، b/349646646) - «افزایه Gradle نمایه پایه ثابت» اصلاح شد تا درصورت ایجاد شدن
nonMinified…وbenchmark…توسط برنامه، بهجای ایجاد بستهبندی از آنها استفاده کند. (Ia8934، b/361370179) java.lang.AssertionError: ERRORS (not suppressed): EMULATORهنگام فعال بودنautomaticGenerationDuringBuildدر شبیهسازها برطرف شد. از آرگومان جدید برای رد شدن از آزمایش استفاده میشود. (If3f51، b/355515798)- Microbenchmark minification - keep subclasses of
org.junit.runner.notification.RunListenerin benchmark library proguard (Ic8ed5, b/354264743) - برای «نادیده گرفتن برشهای غیرپایانی»،
TraceSectionMetricرا اصلاح کنید. قبلاً این موارد دارای مدت -۱ درنظر گرفته میشدند، برای نمونه درطول جمعبندی یا یافتن حداقل مدت. (If74b7) - مشکلی در
FrameTimingGfxInfoMetricبرطرف شد که در آن اگر فرایند ازقبل درحال اجرا نبود، شروع سنجه ازکار میافتاد. (I6e412)
نسخه ۱.۳.۰
۲۱ اوت ۲۰۲۴
androidx.benchmark:benchmark-*:1.3.0 منتشر شد. نسخه ۱.۳.۰ شامل این تعهدات است.
تغییرات معیار سنجش خرد از نسخه ۱.۲.۰
- ردیابی روشها بهطور پیشفرض در ریز محکها هنگام اجرا در اکثر دستگاهها روشن است
- ردیابی روشها بهعنوان فازی جداگانه پساز اندازهگیریها اجرا میشود - این کار باعث میشود اندازهگیریهای دقیق و گزارش ردیابی روشها هر دو از یک اجرای محکزنی واحد برونداد شوند
- ردیابی روشها در برخیاز نسخههای سیستمعامل Android و ART بر فازهای اندازهگیری بعدی تأثیر میگذارد - در این نسخهها، ردیابی روشها بهطور پیشفرض خاموش است و هشداری در خروجی Studio چاپ میشود
- معیارهای رشته اصلی و ANR
measureRepeatedOnMainThreadبرای محکهای رشته میانای کاربر (مثلاً آنهایی که با میاناهای کاربر Compose/View تعامل دارند) اضافه شد تا هنگام اجرا برای چند ثانیه از ANR جلوگیری شود.- اگر انتظار برود که ردیابی روش از مهلت اجتناب از ANR فراتر رود، از آن صرفنظر میشود. برای غیرفعال کردن این رفتار،
androidx.benchmark.profiling.skipWhenDurationRisksAnrرا روی false تنظیم کنید (برای اجراهای CI توصیه نمیشود، زیرا خطاهای ANR میتوانند در اجراهای طولانی CI مشکل ایجاد کنند).
- کوچکسازی
- قوانین proguard جاسازیشده برای بهبود محکزنی خرد با فعال بودن کوچکسازی
- کوچکسازی/R8 در واحد کتابخانه به AGP نسخه ۸.۳ نیاز دارد و میتوان آن را ازطریق
android.buildTypes.release.androidTest.enableMinificationدرbuild.gradleفعال کرد - Experimental
BlackHole.consume()API برای جلوگیری از حذف کد مرده اضافه شد (If6812، b/286091643)
- سنجهها
- ویژگی آزمایشی شمارنده رویداد cpu (سنجههای
perf_event_open، که در اکثر نسخههای پلاتفرم به دسترسی ریشه نیاز دارد)، دسترسی ازطریقInstrumentationArgumentandroidx.benchmark.cpuEventCounter.enable(میتواند رویtrueتنظیم شود)، وandroidx.benchmark.cpuEventCounter.eventsمیتواند مثلاً روی (Instructions,CpuCycles) تنظیم شود. این ویژگی باید در برخیاز شبیهسازهای userdebug پشتیبانی شود، اما پشتیبانی در همه شبیهسازهای دردسترس آزمایش نشده است
- ویژگی آزمایشی شمارنده رویداد cpu (سنجههای
تغییرات MACRObenchmark از نسخه ۱.۲.۰
- بازنگری ردیابی روشها برای محکهای کلان.
- اکنون گزارش ردیابی روشها به مدتزمان
measureBlockمحدود شده است و اگر فرایند چندین بار شروع شود، میتواند چندین جلسه را ضبط کند. - قبلاً، ردیابی روش فقط برای
StartupMode.COLDمحک کار میکرد و برایmeasureBlocksکه فرایند هدف را بازراهاندازی نمیکرد چیزی را ضبط نمیکرد - ردیابیهای روش در معیارسنجی کلان اصلاح شد، بنابراین ردیابیهای روش باید بهطور کامل ضبط و معتبر باشند، حتی در دستگاههای کندتر. (I6349a، b/329904950)
- اکنون گزارش ردیابی روشها به مدتزمان
- وقتی فرایند متوقف میشود، نمایه ART بهدرستی درطول تکرارهای
warmUpتکی تخلیه میشود تا اندازهگیریهایCompilationMode.Partial(warmup=N)دقیقتر باشد. (I17923) - پیام خطای همهفرستی «سایه رهاشده»
- پیشنهادهای اشکالزدایی برای حذف پیام خطای پخش سایهزن اضافه شد
- دو آرگومان ابزار دقیق برای لغو رفتار حذف سایهزن اضافه کنید تا هنگام محکزنی برنامهها بدون
ProfileInstaller1.3، از کار سقوطها جلوگیری شود:-
androidx.benchmark.dropShaders.enable=true/false: میتواند برای رد کردن همه حذفهای سایهزن (ازجمله حذفهای انجامشده در راهاندازیهایStartupMode.Cold) استفاده شود، بهویژه هنگام محک زدن برنامههایی که هنوز از profileinstaller نسخه ۱.۳ استفاده نمیکنند -
androidx.benchmark.dropShaders.throwOnFailure=true/false: میتواند برای تحمل خطاها هنگام تلاش برای حذف سایهزنها استفاده شود، برای مثال هنگام محکزنی برنامهها بدون profileinstaller نسخه ۱.۳ (I4f573)
-
- متغیر آزمایشی
MacrobenchmarkRule#measureRepeatedاضافه شد کهPerfettoConfigسفارشی را برای ضبط ردیابی کاملاً سفارشی Perfetto میگیرد. توجه داشته باشید که پیکربندیهای نادرست ممکن است باعث شود کلاسهای «سنجه» داخلی ناموفق باشد. (Idfd3d، b/309841164، b/304038384) - برای کاهش تداخل، قبلاز اجرای «ریزمعیار»، کارهای dexopt پسزمینه را لغو کنید. (I989ed)
- Macrobenchmark اکنون ۱ ثانیه منتظر میماند تا برنامه هدف نمایه ART را پاک کند (قبلاً ۵۰۰ میلیثانیه منتظر میماند). (I85a50, b/316082056)
- TraceSectionMetric overhaul
- توجه: تغییرات
TraceSectionMetricدر زیر میتواند بر بروندادها در استفاده از CI تأثیر بگذارد و ممکن است باعث ایجاد ناپیوستگی یا قطع تجزیه شود - اکنون «مجموع» پیشفرض است، زیرا بیشتر استفاده از این سنجه برای رویدادهای تکراری است و «اولین» در این موارد دادهها را کنار میگذارد
- تغییر کرده است تا سفارشیسازی بیشتری داشته باشد و حالتهای بیشتری دراختیار قرار دهد
- نامهای حالت اکنون در نام برونداد سنجه (در «استودیو» و JSON) جاسازی شدهاند
- اکنون از برشهای ایجادشده بااستفاده از
Trace.{begin|end}AsyncSectionپشتیبانی میکند.
- توجه: تغییرات
- سنجهها
- قدرت -
PowerMetric.deviceSupportsHighPrecisionTracking،PowerMetric.deviceBatteryHasMinimumCharge()، وPowerMetric.deviceSupportsPowerEnergy()اضافه شد - نام
Metric.getResultبهgetMeasurementsتغییر کرد تا با نوع برگشتی مطابقت داشته باشد - برچسبهای log.w / استثنا به همه موارد عدم شناسایی راهاندازی اضافه شد. این کار رفتار فعلی را تغییر نمیدهد (بنابراین برخیاز خطاها نشان داده میشوند و برخی دیگر بدون اطلاع کاربر راهاندازی را شناسایی نمیکنند)، فقط آن را قابلفهمتر میکند. بهطورکلی، مواردی که
Log.w()و سنجههای راهاندازی را گزارش نمیکنند مواردی هستند که رویدادهای غیرقابتصویر در آنها وجود ندارد، وقتی راهاندازی شناسایی میشود استثناهایی ایجاد میشود بهجز اطلاعات زمانبندی قاب (از برشهای UI/RT). (Id240f، b/329145809) - سنجش
frameCountبهFrameTimingMetricاضافه شد تا به کشف سناریوهایی که در آنها سنجشها بهدلیل تغییر تعداد فریمهای تولیدشده تغییر میکنند (افزوده شدن پویانماییهای جدید، رفع مشکلات نامعتبرسازی) کمک کند. (I1e5aa) - توضیح داده شد که
frameOverrunMsسنجه ترجیحی برای ردیابی است (درصورت دردسترس بودن در اسناد) و دلیل آن بیان شد. (I18749، b/329478323) - مشکلی را برطرف میکند که در آن فریمهای پایاننیافته در ابتدا و انتهای ردگیری میتوانستند با هم جفت شوند، که بهاشتباه بهعنوان یک فریم بسیار طولانی گزارش میشد. (I39353، b/322232828)
- بهبود خطای
FrameTimingMetricوقتی قابها تولید نمیشوند، و همیشه پیوند خروجی برای ردیابی وقتی تجزیه سنجه ناموفق است برای کمک به تشخیص مشکل. (I956b9) - خرابی در
FrameTimingMetricکه بهدلیل عدم تجزیه شناسه قاب، بهویژه در برخی دستگاههای سازنده اصلی محصول، رخ میداد برطرف شد. (Ia24bc، b/303823815، b/306235276) - سختگیری بررسیها در
FrameMetricsکاهش یافت و جزئیات بیشتری به پیامهای خطا اضافه شد. (Iadede)
- قدرت -
تغییرات ضبط «نمایه مبنا» / افزونه Gradle از نسخه ۱.۲.۰
- حداکثر نسخه توصیهشده AGP به 9.0.0-alpha01 افزایش یافت.
- مطمئن شوید تکالیف
mergeArtProfileوmergeStartupProfileهمیشه منتظر تولید نمایه مبنا میمانند. (I623d6، b/343086054) - تولید موفقیتآمیز نمایه مبنا خلاصهای از تغییرات را خروجی میدهد (I824c8، b/269484510)
- DSL برای غیرفعال کردن هشدارها اضافه شد (Ic4deb، b/331237001)
- برای اطمینان از اینکه وقتی
automaticGenerationDuringBuildخاموش است، معیارها از نمایههای پایه تولیدشده استفاده میکنند، مشکل را برطرف کنید (Ic144f، b/333024280) - اصلاح لغو ویژگی افزونه gradle
BaselineProfileبرای فعال کردن تولید نمایه مبنا و محکزنی هنگام سفارشیسازی نوع ساختnonMinifiedیا محکزنی. (Ib8f05، b/324837887) - رفع مشکل برای افزودن نمایههای پایه کتابخانه در AAR قبلاز AGP 8.3.0-alpha15. (I1d2af, b/313992099)
- نشانی وب خروجی نمایه راهاندازی و خط مبنا در پایان تکلیف تولید اصلاح شد. (I802e5، b/313976958)
تغییرات مهم دیگر از نسخه ۱.۲.۰
- ضبط ردیابی
- خطای EXITCODE 2 هنگام شروع perfetto از خطا به هشدار ثبتشده کاهش یافت
- فعال کردن ردیابی AIDL بهطور پیشفرض در محکها(به API 28 نیاز دارد) (Ia0af2، b/341852305)
- بهطور پیشفرض ردیابی برچسب حامل را در محکها فعال کنید. این کار، برای مثال، نقاط ردیابی wakelock را ضبط میکند. (Icfe44، b/286551983)
- افزایش زمان اتمام مهلت شروع ضبط ردیابی برای جلوگیری از خرابی هنگام شروع ردیابی در دستگاههای کندتر (I98841، b/329145808)
PerfettoTraceProcessor.Session.queryMetricsمیانای برنامهسازی کاربردی عمومی با انواع JSON، textproto، و proto binary (رمزگشایینشده) اضافه شد. اینها به شما امکان میدهند سنجههای ساختهشده درTraceProcessorرا پُرسمان کنید (I54d7f، b/304038382)- برای کاهش خطر ازدست رفتن دادهها در ابتدای ردیابی، شروع مسدودسازی را در گزارش ردیابی Perfetto فعال کنید. فقط در میانای برنامهسازی کاربردی ۳۳ و بالاتر پشتیبانی میشود. (Ie6e41، b/310760059)
- خروجی JSON
- اطلاعات بیشتری در بافت معیار در برونداد JSON اضافه شد:
context.artMainlineVersion- نسخه عدد صحیح از ماژول اصلی Art (اگر در دستگاه وجود داشته باشد، درغیراینصورت-1)-
context.build.id- مساوی با android.os.Build.ID context.build.version.codename- برابر است با android.os.Build.VERSION.CODENAMEcontext.build.version.abbreviatedCodename- با حرف اول نام کد پیشانتشار مطابقت دارد (ازجمله در ساختهای نسخه پخش) (Ie5020)
- فهرست
profilerOutputبه برونداد JSON اضافه شد تا ابزارهای مربوط به ردیابیهای نمایهسازی (برای نمونه، Perfetto، ردیابیهای روش) آسانتر شود (I05ddd، b/332604449) - هشداری اضافه شد برای زمانی که از «هماهنگکننده آزمایش Android» در پیمانههای محک استفاده میشود، زیرا این کار باعث میشود فایلهای JSON خروجی هر پیمانه بهطور مکرر رونویسی شوند. (Ia1af6، b/286899049)
- Throw when filenames are longer than 200 chars to avoid unclear crashes when writing or post-processing files. (I4a5ab)
- اطلاعات بیشتری در بافت معیار در برونداد JSON اضافه شد:
نسخه 1.3.0-rc01
۷ اوت ۲۰۲۴
androidx.benchmark:benchmark-*:1.3.0-rc01 منتشر شد. نسخه 1.3.0-rc01 شامل این تعهدات است.
رفع اشکالها
- رفع مشکل
androidx.benchmark.cpuEventCounterکه مقادیر معیوب برای رویدادهای غیردستوری تولید میکند (I7386a، b/286306579) -
resumeTiming/runWithTimingDisabledرا اصلاح کنید تا ترتیب اولویت سنجه رعایت شود و تأثیر توقف/ازسرگیری سنجه با اولویت پایین بر نتایج سنجه با اولویت بالاتر بهطور قابلتوجهی کاهش یابد. برای مثال، اگر از شمارندههای cpu perf ازطریق آرگومان ابزار دقیقcpuEventCounter.enableاستفاده شود، دیگر با وقوع توقف/ازسرگیری، timeNs بهطور قابلتوجهی کاهش نمییابد. (I39c2e، b/286306579، b/307445225) - با انتقال تبدیل نمونهگیری پشته به خارج از رشته اصلی، احتمال اینکه نمونهگیری پشته باعث شود
measureRepeatedOnMainThreadبه مهلت زمانی سخت رشته اصلی برسد کاهش یافته است. (I487a8، b/342237318) - ازآنجاییکه هنگام استفاده از R8 با AGP نسخه ۷.۳ یا جدیدتر (برای نمونه، R8 نسخه ۳.۳) و برای همه ساختها هنگام استفاده از AGP نسخه ۸.۱ یا جدیدتر (برای نمونه، D8 نسخه ۸.۱)، نمای کلی دستی دسترسی به میاناهای برنامهسازی کاربردی پلاتفرم جدید بهطور خودکار ازطریق مدلسازی میانای برنامهسازی کاربردی انجام میشود، نمای کلی دستی دسترسی به میاناهای برنامهسازی کاربردی پلاتفرم جدید برداشته شد. به کارخواهانی که از AGP استفاده نمیکنند توصیه میشود به D8 نسخه ۸.۱ یا بالاتر بهروزرسانی کنند. برای جزئیات بیشتر، این مقاله را ببینید. (I9496c، b/345472586)
- بررسی نسخه agp برای ارسال نام بسته بهعنوان آرگومان instr اضافه شد. قبلاز AGP 8.4.0، نام بسته برنامه هدف را نمیتوان ازطریق آرگومانهای ابزار دقیق به برنامه ابزار دقیق ارسال کرد. (0c72a3f)
نسخه 1.3.0-beta02
۱۰ ژوئیه ۲۰۲۴
androidx.benchmark:benchmark-*:1.3.0-beta02 منتشر شد. نسخه 1.3.0-beta02 شامل این تعهدها است.
رفع اشکالها
- هنگام شروع Perfetto، کد خروج
2را بهطور مناسب مدیریت کنید تا هشدار ثبت شود، اما ادامه دهید.
نسخه 1.3.0-beta01
۱۲ ژوئن ۲۰۲۴
androidx.benchmark:benchmark-*:1.3.0-beta01 منتشر شد. نسخه 1.3.0-beta01 شامل این تعهدات است.
تغییرات میانای برنامهسازی کاربردی
- نام
MethodTracing.affectsMeasurementOnThisDeviceبرای سازگاری بهAFFECTS_MEASUREMENT_ON_THIS_DEVICEتغییر کرد. (I1bdfa) -
BlackHole.consume()api آزمایشی اضافه شد تا از حذف کد مرده در ریزسنجشها جلوگیری شود. (If6812، b/286091643) - اکنون «ریزمعیار» بهدرستی استثنا پرتاب میکند تا از تداخل ردیابی روش با اندازهگیریها جلوگیری کند. این اتفاق در برخیاز دستگاهها زمانی رخ میدهد که ردیابی روش بهاجبار روشن باشد (ازطریق آرگومانهای ابزار دقیق یا
MicrobenchmarkConfig)، و اگر پساز ردیابی روش، اندازهگیری انجام شود. دستگاههای تحتتأثیر این تداخل از API 26-30 یا نسخههای خاصی از واحد اصلی ART که تحتتأثیر این تداخل قرار گرفتهاند استفاده میکنند و میتوانند در زمان اجرا ازطریقProfilerConfig.MethodTracing.affectsMeasurementOnThisDeviceشناسایی شوند. (Iafb92، b/303660864)
رفع اشکالها
- حداکثر نسخه agp توصیهشده به 9.0.0-alpha01 ارتقا یافت. (I5bbb0)
- حالت گردآوری به زمینه محک اضافه شد (If5612، b/325512900)
- فعال کردن ردیابی AIDL بهطور پیشفرض (به میانای برنامهسازی کاربردی ۲۸ نیاز دارد) (Ia0af2، b/341852305)
- اطلاعات بیشتری در بافت معیار در برونداد JSON اضافه شد:
context.artMainlineVersion- نسخه عدد صحیح پودمان خط اصلی Art (اگر در دستگاه وجود داشته باشد، درغیراینصورت -۱)-
context.build.id- مساوی باandroid.os.Build.IDاست -
context.build.version.codename- برابر باandroid.os.Build.VERSION.CODENAME context.build.version.abbreviatedCodename- corresponds to first letter of pre-release codename (even on release builds) (Ie5020)
- Fixes
StackSamplingto respectandroidx.benchmark.profiling.sampleDurationSeconds(Ib1d53) - Change macro->common dependency to be
api(), so it's easier to use e.g.PerfettoTraceandPerfettoConfig. (Icdae3، b/341851833) - مطمئن شوید که تکالیف
mergeArtProfileوmergeStartupProfileهمیشه منتظر تولید نمایه پایه هستند. (I623d6، b/343086054) - هنگام تصمیمگیری درباره اینکه آیا متغیر باید فعال شود، وضعیت فعال بودن متغیر را درنظر بگیرید. (I5d19e، b/343249144)
- زمان اتمام شروع پیشفرض برای پردازنده ردیابی perfetto افزایش یافت. (I87e8c، b/329145808)
نسخه 1.3.0-alpha05
۱۴ مه ۲۰۲۴
androidx.benchmark:benchmark-*:1.3.0-alpha05 منتشر شد. نسخه 1.3.0-alpha05 حاوی این ارسالها است.
رفع اشکالها
- وقتی سنجه کلانمعیار مقادیر صفر را برای همه تکرارها برمیگرداند، استثنای واضحتری ایجاد میشود (Iab58f، b/314931695)
- قوانین راهحل اضافی به قوانین proguard microbench اضافه شد، ازجمله پشتیبانی از قوانین شنونده و سایر هشدارها / خطاهای مشاهدهشده. (I14d8f، b/329126308، b/339085669)
- ردیابی روش بهعنوان مرحلهای جداگانه درطول «ریزمعیار» اجرا میشود و دیگر بر اندازهگیریها تأثیر نمیگذارد. (If9a50، b/285912360، b/336588271)
- پیشنهادهای اشکالزدایی اضافی به پیام خطای همهفرستی سایهزن حذفشده اضافه شد. (I5efa6، b/325502725)
نسخه 1.3.0-alpha04
۱ مه ۲۰۲۴
androidx.benchmark:benchmark-*:1.3.0-alpha04 منتشر شد. نسخه 1.3.0-alpha04 شامل این تغییرات است.
تغییرات میانای برنامهسازی کاربردی
- متغیر آزمایشی
MacrobenchmarkRule#measureRepeatedاضافه شد کهPerfettoConfigسفارشی را برای ضبط ردیابی کاملاً سفارشیسازیشده Perfetto میگیرد. توجه داشته باشید که پیکربندیهای نادرست ممکن است باعث ازکارافتادن کلاسهای «سنجه» داخلی شود. (Idfd3d، b/309841164، b/304038384) - Rename
PowerMetric.deviceSupportsPowerEnergytoPowerMetric.deviceSupportsHighPrecisionTrackingfor clarity (I5b82f) PowerMetric.deviceBatteryHasMinimumCharge()وPowerMetric.deviceSupportsPowerEnergy()اضافه شد تا امکان تغییر یا رد شدن از محکها براساس قابلیت اندازهگیری توان دستگاه فراهم شود. (I6a591, b/322121218)
رفع اشکالها
- مقایسه با نمایه مبنای قبلی (I824c8، b/269484510) اضافه شد
- Added DSL to disable warnings (Ic4deb, b/331237001)
- تغییر استثنا به گزارش اطلاعات هنگام غیرفعال بودن متغیرهای محک (I8a517، b/332772491)
- Make it simpler to capture method traces for a Macrobenchmark is scoped to the duration of the actual
measureBlock(). قبلاً، در راهاندازی فرایند هدف شروع میشد و فقط از شروع سرد پشتیبانی میکرد (Iee85a، b/300651094) - جلوگیری از خراب شدن وقتی پردازنده ردیابی perfetto کند شروع میشود (I98841، b/329145808)
نسخه 1.3.0-alpha03
۱۷ آوریل ۲۰۲۴
androidx.benchmark:benchmark-*:1.3.0-alpha03 منتشر شد. نسخه 1.3.0-alpha03 حاوی این ارسالها است.
ویژگیهای جدید
- میانای برنامهسازی کاربردی عمومی
PerfettoTraceProcessor.Session.queryMetricsرا با انواع JSON، textproto، و proto binary (رمزگشایینشده) اضافه میکند. اینها به شما امکان میدهند سنجههای تعبیهشده در TraceProcessor را پُرسمان کنید (I54d7f، b/304038382) profilerOutputبه خروجی JSON اضافه شد تا ابزارسازی در اطراف ردیابیهای نمایهسازی (مثلاً perfetto، ردیابیهای روش) آسانتر شود. (I05ddd، b/332604449)- برچسب توان به پیکربندی Perfetto محک اضافه شد. این کار، برای مثال، نقاط ردیابی wakelock را ضبط میکند. (Icfe44، b/286551983)
- آرگومان inst
androidx.benchmark.profiling.skipWhenDurationRisksAnrاضافه شد، برای جلوگیری از رد کردن ردهای روش وقتی مدت موردانتظار ممکن است باعث ANR شود، میتوان آن را روی نادرست تنظیم کرد - اکیداً توصیه میشود در اجراهای CI از آن استفاده شود. - آرگومان آزمایشی inst
androidx.benchmark.profiling.perfCompare.enableاضافه شد، برای اجرای زمانبندی مقایسه بین مراحل اندازهگیری و نمایهسازی، این را روی درست تنظیم کنید. برای مثال، در ارزیابی سربار ردیابی روش مفید است. (I61fb4، b/329146942)
تغییرات میانای برنامهسازی کاربردی
TraceSectionMetric.Modeبه کلاس مهرومومشده تغییر کرد تا امکان گسترش در آینده بدون شکستن دستورات exhaustive when فراهم شود (I71f7b)-
TraceSectionMetric.Mode.Averageو.Countاضافه شد و ترتیب آرگومانها تغییر کرد تا آرگومان رایجتر (حالت) در فهرست آرگومانها زودتر قرار گیرد و نیاز به مشخص کردن نام پارامتر کاهش یابد. (Ibf0b0، b/315830077، b/322167531) - نام
Metric.getResultبهgetMeasurementsتغییر کرد تا با نوع پاسخ مطابقت داشته باشد (I42595)
رفع اشکالها
- Fix to ensure benchmarks use generated baseline profiles when
automaticGenerationDuringBuildis off (Ic144f, b/333024280) - اصلاح لغو ویژگی افزونه gradle
BaselineProfileبرای فعال کردن تولید نمایه مبنا و محکزنی هنگام سفارشیسازی نوع ساختnonMinifiedیا محک. (Ib8f05، b/324837887) - ردیابیهای روش در ماکروبنچمارک بهطور کامل تخلیه میشوند تا ردیابیهای روش حتی در دستگاههای کندتر بهطور کامل ضبط و معتبر باشند. (I6349a، b/329904950)
- فعال کردن شروع مسدودسازی در ثبت ردیابی Perfetto برای کاهش خطر ازدست رفتن دادهها در شروع ردیابی. فقط در API 33 و نسخههای بالاتر پشتیبانی میشود. (Ie6e41، b/310760059)
- هشداری اضافه شد برای زمانی که از «هماهنگکننده آزمایش Android» در پیمانههای محک استفاده میشود، زیرا این کار باعث میشود فایلهای JSON خروجی هر پیمانه بهطور مکرر رونویسی شوند. (Ia1af6، b/286899049)
- Force ',' (comma) thousands separators for consistency in Studio output, ignoring device locale (I3e921, b/313496656)
-
TraceSectionMetricاکنون از برشهای ساختهشده بااستفاده ازTrace.{begin|end}AsyncSectionپشتیبانی میکند. (I91b32, b/300434906) - برچسبهای log.w / exception به همه خطاهای تشخیص راهاندازی اضافه شد. این کار رفتار فعلی را تغییر نمیدهد (بنابراین برخیاز خطاها نشان داده میشوند و برخی دیگر بدون اطلاع کاربر راهاندازی را شناسایی نمیکنند)، فقط آن را قابلفهمتر میکند. بهطورکلی، مواردی که
Log.w()و سنجههای راهاندازی را گزارش نمیکنند مواردی هستند که رویدادهای غیرقابتصویر در آنها وجود ندارد، وقتی راهاندازی شناسایی میشود استثناهایی ایجاد میشود بهجز اطلاعات زمانبندی قاب (از برشهای UI/RT). (Id240f، b/329145809) - برای کاهش تداخل، کارهای dexopt پسزمینه را قبلاز اجرای Macrobenchmark لغو کنید. (I989ed)
-
frameCountاندازهگیری بهFrameTimingMetricاضافه شد تا به شناسایی سناریوهایی که در آنها اندازهگیریها بهدلیل تغییر تعداد قابهای تولیدشده تغییر میکند کمک کند (پویانماییهای جدید اضافه شده است، مشکلات نامعتبرسازی برطرف شده است). (I1e5aa) - توضیح داده شد که
frameOverrunMsسنجه ترجیحی برای ردیابی است (درصورت دردسترس بودن در اسناد) و دلیل آن نیز بیان شد. (I18749، b/329478323)
نسخه 1.3.0-alpha02
۲۰ مارس ۲۰۲۴
androidx.benchmark:benchmark-*:1.3.0-alpha02 منتشر شد. نسخه 1.3.0-alpha02 حاوی این ارسالها است.
ویژگیهای جدید
پشتیبانی آزمایشی از R8 در microbench ازطریق قوانین جاسازیشده ProGuard. توجه داشته باشید که این پشتیبانی آزمایشی است و برای کوچکسازی آزمایشهای واحد کتابخانه به AGP 8.3 نیاز دارد. از موارد زیر برای فعال کردن کوچکسازی/بهینهسازی R8 در
build.gradleواحد معیار خود استفاده کنید که بسته به حجم کار، باید منجر به افزایش قابلتوجه عملکرد شود. (I738a3، b/184378053)android { buildTypes.release.androidTest.enableMinification = true }
رفع اشکالها
- هشدار ردیابی روش را اصلاح میکند تا در خط جداگانهای از برونداد میکرو محک قرار گیرد. (I0455c، b/328308833)
نسخه 1.3.0-alpha01
۲۱ فوریه ۲۰۲۴
androidx.benchmark:benchmark-*:1.3.0-alpha01 منتشر شد. نسخه 1.3.0-alpha01 حاوی این تعهدات است.
تغییرات میانای برنامهسازی کاربردی
- نام پارامترهای بولی
MicrobenchmarkConfigتغییر کرد تا از کلمه غیرضروری «باید» (Ia8f00، b/303387299) استفاده نشود BenchmarkRule.measureRepeatedOnMainThreadاضافه شد تا محکهای رشته اصلی (مثلاً محکهایی که با «نماها» یا «میاناهای کاربر Compose» سروکار دارند) بتوانند از راهاندازی ANR جلوگیری کنند، بهویژه درطول مجموعههای بزرگ در CI. (I5c86d)FrameTimingGfxInfoMetricاضافه شد، پیادهسازی جایگزین آزمایشیFrameTimingMetricبا اندازهگیریهایی که مستقیماً از پلاتفرم میآیند، بهجای اینکه از ردیابی Perfetto استخراج شوند. (I457cb، b/322232828)- افزودن توانایی تخلیه نمایه ART درطول تکرارهای
warmUpجداگانه. (I17923) - چندین تغییر در
TraceSectionMetricAPI:- افزودن
Mode.Min،Mode.Max - افزودن آرگومان برچسب برای لغو نام بخش بهعنوان برچسب سنجه
- نام حالت به خروجی اضافه شد تا معنی سنجه واضحتر شود
- Changed default to sum, as most usage of this metric is for repeated events Be aware of this changes in CI usage, as it may create discontinuities or break parsing. (Ic1e82، b/301892382، b/301955938)
- افزودن
رفع اشکالها
- بهبود پیام خطا در افزونه gradle نمایه مبنا وقتی دستگاه مدیریتشده مشخصشده وجود ندارد (Idea2b، b/313803289)
- رفع مشکل افزودن نمایههای پایه کتابخانه به AAR قبلاز AGP نسخه 8.3.0-alpha15 (I1d2af، b/313992099)
- نشانی وب برونداد نمایه راهاندازی و مبنای ثابت در انتهای کار تولید اصلاح شد (I802e5، b/313976958)
- مهلتهای زمانی منبع داده برای تلاش جهت رفع
java.lang.IllegalStateException: Failed to stop [ProcessPid(processName=perfetto, pid=...)]تنظیم شد (I8dc7d، b/323601788) - دو آرگومان ابزار دقیق برای لغو رفتار حذف سایهزن اضافه کنید تا هنگام محکزنی برنامهها بدون
ProfileInstaller1.3، از کار سقوطها جلوگیری شود:-
androidx.benchmark.dropShaders.enable=true/false: میتواند برای رد شدن از همه حذفهای سایهزن (ازجمله حذفهایی که در راهاندازیهایStartupMode.Coldانجام میشود) استفاده شود، بهویژه هنگام محکزنی برنامههایی که هنوز از profileinstaller 1.3 استفاده نمیکنند androidx.benchmark.dropShaders.throwOnFailure=true/false: میتواند برای تحمل خرابیها هنگام تلاش برای رها کردن سایهزنها استفاده شود، برای مثال هنگام محکزنی برنامهها بدون profileinstaller 1.3 (I4f573)
-
- رد شدن از گزارش ردیابی روشها در رشته میانای کاربر وقتی انتظار میرود بیشاز چند ثانیه طول بکشد، و پاکسازی گزارش ردیابی روشها هنگام پرتاب کردن. (I6e768)
- وقتی نام فایلها بیشتر از ۲۰۰ نویسه است، استثنا ایجاد کنید تا هنگام نوشتن یا پسپردازش فایلها با خرابیهای نامشخص مواجه نشوید. (I4a5ab)
- مشکلی را برطرف میکند که در آن قابهای بدون پایان در ابتدا و انتهای ردیابی میتوانستند با هم جفت شوند، که بهاشتباه بهعنوان یک قاب بسیار طولانی گزارش میشد. (I39353، b/322232828)
- هنگام بازنصب کردن بسته در میانای برنامهسازی کاربردی ۳۰-۳۳، از
--skip verificationدر میانای برنامهسازی کاربردی ۳۰+ استفاده کنید تا نمایههای ART در نسخههای کاربر پاک شود. این کار به دور زدن هشدارهای «سپر ایمنی Play» که باعث خرابی در برخیاز انواع دستگاهها میشود کمک میکند. (Ic9e36) - از
am force-stopبرای بستن برنامهها وقتی برنامه سیستم نیست (مثل «واسط کاربر سیستم» یا «راهانداز») استفاده کنید. (I5e028) - Macrobenchmark اکنون
1 secondمنتظر میماند تا برنامه هدف نمایه ART را پاک کند (قبلاً500 msمنتظر میماند). (I85a50، b/316082056) - خطای
FrameTimingMetricرا در مواقعی که قاب تولید نمیشود بهبود دهید و همیشه پیوند را برای ردیابی درصورت تجزیه ناموفق سنجه برونداد کنید تا به تشخیص مشکل کمک کند. (I956b9) - خرابی در
FrameTimingMetricکه بهدلیل تجزیه نشدن شناسه قاب رخ میداد، بهویژه در برخیاز دستگاههای سازنده اصلی محصول، رفع شد. (Ia24bc، b/303823815، b/306235276) - سختگیری بررسیها در
FrameMetricsکاهش یافت و جزئیات بیشتری به پیامهای خطا اضافه شد. (Iadede)
نسخه ۱.۲
نسخه ۱.۲.۴
۱۷ آوریل ۲۰۲۴
androidx.benchmark:benchmark-*:1.2.4 منتشر شد. نسخه ۱.۲.۴ شامل این تعهدات است.
رفع اشکالها
- srcset نمایه مبنا را که در انواع محک تنظیم نشده است اصلاح میکند. همچنین
automaticGenerationDuringBuildرا در کتابخانههایی که باعث وابستگی دایرهای میشوند برطرف میکند. (I28ab7، b/333024280) - از
am force-stopبرای بستن برنامهها وقتی برنامه سیستم نیست (مثل «واسط کاربر سیستم» یا «راهانداز») استفاده کنید. این مشکل خرابی محکهایStartupMode.COLDبهدلیل «بسته $package نباید قبلاز شروع سرد اجرا شود!» را برطرف میکند، زیرا توقف فرایند بهطور کامل موفقیتآمیز نبوده است. (I5e028)
نسخه ۱.۲.۳
۲۴ ژانویه ۲۰۲۴
androidx.benchmark:benchmark-*:1.2.3 منتشر شد. نسخه ۱.۲.۳ حاوی این ثبتها است.
رفع اشکالها
- استثنا از «افزایه Gradle نمایه مبنا» وقتی نسخه AGP ۸.۳.۰ یا بالاتر باشد برداشته شد.
- اصلاحیهای برای گنجاندن نمایههای مبنای کتابخانه در AAR قبلاز AGP 8.3.0-alpha15.
نسخه ۱.۲.۲
۱ دسامبر ۲۰۲۳
androidx.benchmark:benchmark-*:1.2.2 منتشر شد. نسخه ۱.۲.۲ حاوی این تعهدات است.
نمایههای مبنا
- گزارشهای اجرا مسیر فایل برونداد نمایه پایه را بهعنوان نشانی وب فایل محلی نشان میدهد (aosp/2843918، aosp/2853665، b/313976958)
نسخه ۱.۲.۱
۱۵ نوامبر ۲۰۲۳
androidx.benchmark:benchmark-*:1.2.1 منتشر شد. نسخه ۱.۲.۱ حاوی این تعهدات است.
ویژگیهای جدید
- Improved error message when user disables test variants (b/307478189)
- داراییهایی برای پشتیبانی از یکپارچهسازی اجرای آزمایشی AS اضافه شد (b/309805233)، (b/309116324)
نسخه ۱.۲.۰
۱۸ اکتبر ۲۰۲۳
androidx.benchmark:benchmark-*:1.2.0 منتشر شد. نسخه ۱.۲.۰ حاوی این ثبتها است.
تغییرات مهم از نسخه ۱.۱.۰
نمایههای مبنا
- افزایه Gradle نمایه پایه جدید بهطور خودکار نمایههای پایه را در گردش کار ساخت و آزمایش شما ضبط و اضافه میکند.
BaselineProfileRule.collectاکنون پایدار است، نسخهای ساده و کارآمد از میانای برنامهسازی کاربردی آزمایشی قبلیBaselineProfileRule.collectBaselineProfile- فقط
packageNameرا مشخص کنید و برنامهتان را هدایت کنید
- فقط
- برای کتابخانههایی که نمایه مبنا تولید میکنند، اکنون میتوانید قوانین تولیدشده را در کد (آرگومان
BaselineProfileRule.collect) یا حتی سادهتر در افزونه gradle فیلتر کنید - تصحیحها
- جمعآوری نمایه خط مبنا در Android U+ (Id1392، b/277645214) اصلاح شد
Macrobenchmark
- مجموعه
- Macrobenchmark اکنون وضعیت کامپایل را برای هر کامپایل بهدرستی و بهطور کامل بازنشانی میکند - این کار مستلزم بازنصب کردن APK قبلاز Android 14 است، بنابراین اگر میخواهید وضعیت (مانند ورود به سیستم کاربر) را در آنچه اندازهگیری میشود حفظ کنید، قویاً توصیه میشود که محکزنی را در Android 14 و نسخههای بالاتر انجام دهید.
- همچنین میتوانید با کنترل جداگانه کامپایل برنامه و رد شدن از کامپایل با
CompilationMode.Ignore()یا آرگومان ابزار دقیق، این مشکل را برطرف کنید
متغیرهای مستقل ابزارسازی
- پشتیبانی از آرگومان ابزار دقیق
androidx.benchmark.dryRunMode.enable(که قبلاً در ریز محکافزار دردسترس بود) برای اجرای سریعتر اعتبارسنجی (مثلاً هنگام ایجاد محکافزار یا در پیشارسال) - پشتیبانی از
androidx.benchmark.profiling.mode=StackSamplingوMethodTracing. androidx.benchmark.enabledRulesاضافه شد تا امکان فیلتر کردن زمان اجرا در نمایه پایه دربرابر آزمایشهای قانون سنجش کلان فراهم شود- متغیر مستقل
androidx.benchmark.perfettoSdkTracing.enableبرای فعال کردن ردیابی با tracing-perfetto اضافه شد، برای مثال، ردیابی بازترکیب «ترکیببندی». توجه داشته باشید که وقتی باStartupMode.COLDاستفاده میشود، زمانبندی بهطور قابلتوجهی تحت تأثیر قرار میگیرد زیرا کتابخانه ردیابی درطول راهاندازی برنامه بار میشود و فعال میشود.
- پشتیبانی از آرگومان ابزار دقیق
الزامات
- Macrobenchmark اکنون به
ProfileInstallerنسخه ۱.۳.۰ یا بالاتر در برنامه هدف نیاز دارد تا بتواند ضبط / بازنشانی نمایه و پاک کردن حافظه پنهان سایهزن را فعال کند.
- Macrobenchmark اکنون به
Metric APIs آزمایشی جدید
TraceSectionMetricآزمایشی اضافه شد که امکان استخراج زمانبندی ساده از بلوکهایtrace("") {}در برنامه شما یا TraceMetric را برای بهرهبرداری از قابلیت کامل پُرسمان PerfettoTraceProcessorفراهم میکند.PowerMetricآزمایشی برای ضبط اطلاعات مصرف برق اضافه شدMemoryCountersMetricآزمایشی برای شمارش خطاهای صفحه اضافه شدPerfettoTraceProcessorAPI آزمایشی اضافه شد که بهطور داخلی برای استخراج سنجهها از ردگیریهای سیستم (یا ردگیریهای Perfetto) استفاده میشود
تصحیحات
- خرابیهای هنگام نصب یا استخراج نمایهها از برنامهای که از چند APK نصب شده است (مثلاً از دسته برنامه) برطرف شد.
- رفع مشکل
FrameTimingMetricکه قابهای دارای شناسههای قاب ناسازگار را نادیده میگرفت (معمولاً قابهای حین موجهای API 31+) (I747d2، b/279088460) - خطاهای تجزیه در ردیابیهای > ۶۴ مگابایت برطرف شد (Ief831، b/269949822)
- خطاهای شفافسازیشده هنگام پیکربندی نادرست تصویر سیستمعامل دستگاه (بهویژه شبیهساز) برای ردیابی یا کامپایل کردن
- برای دستگاههای بدون باتری (کوچک و بزرگ)، بررسی سطح باتری رد شود
- برونداد فایل بهبودیافته، با خطاهای واضحتر برای دایرکتوریهای برونداد نامعتبر، و پیشفرضهای ایمنتر
- پایداری
StartupMode.COLDبا حذف مداوم حافظه نهان سایهزن (که ازطریقMacrobenchmarkScope.dropShaderCacheنیز نمایش داده میشود) بهبود یافته است - بازگشت به حالت تکیهگاهی ثابت برای
startActivityAndWait.
Microbenchmark
- ویژگیها
- نمایهسازی به مرحلهای جداگانه، پساز سایر سنجهها، منتقل شد تا یک اجرای آزمایشی بتواند هم زمانبندی دقیق و هم نتایج نمایهسازی را نمایش دهد.
- میاناهای برنامهسازی کاربردی آزمایشی
- API آزمایشی
MicrobenchmarkConfigبرای تعریف سنجههای سفارشی و پیکربندی ردیابی و نمایهسازی اضافه شد. میتواند برای ضبط کردن گزارش ردیابی روشها یا ضبط کردن نقاط ردیابی استفاده شود (اما از سربار ردیابی آگاه باشید). - میاناهای برنامهسازی کاربردی آزمایشی برای کنترل
BenchmarkStateبهطور جداگانه ازBenchmarkRule، بدون JUnit اضافه شد - رکورد آزمایشی
PerfettoTraceاضافه شد تا امکان ضبط ردهای Perfetto با پیکربندی سفارشی و جدا از میاناهای برنامهسازی کاربردی محک فراهم شود.
- API آزمایشی
- تصحیح
- فضاهای خالی پیشرو مفقودشده در برونداد محک «استودیو Android» را دور بزنید.
- مشکلی که باعث میشد هشدارها در خروجی محک Android Studio چاپ نشود برطرف شد.
- ازکارافتادگی
SampledProfilingدر Android 13 (میانای برنامهسازی کاربردی ۳۳) و بالاتر برطرف شد. - عملکرد
dryRunModeبا رد شدن ازIsolationActivityو ردیابی Perfetto بهطور قابلتوجهی بهبود یافته است (حالت اجرای آزمایشی تا ۱۰ برابر سریعتر در نسخههای قدیمیتر سیستمعامل).
نسخه 1.2.0-rc02
۶ اکتبر ۲۰۲۳
androidx.benchmark:benchmark-*:1.2.0-rc02 منتشر شد. نسخه 1.2.0-rc02 حاوی این commitها است.
رفع اشکالها
- برطرف کردن برونداد فایل «محکزنی» تا دیگر کپی کردن فایل
BaselineProfileافزایه را متوقف نکند. فایلها تولید و از دستگاه کپی شدند، اما نام آنها تغییر کرده بود بهطوریکه افزونه gradle آنها را نمیدید. (I8dbcc، b/303034735، b/296453339) - پیامهای خطای بار کردن
tracing-perfettoهنگام تزریق از واحد معیار کلان به برنامه هدف شفافسازی شد.
نسخه 1.2.0-rc01
۲۰ سپتامبر ۲۰۲۳
androidx.benchmark:benchmark-*:1.2.0-rc01 منتشر شد. نسخه 1.2.0-rc01 حاوی این commit-ها است.
رفع اشکالها
- اکنون وقتی ردیابی Perfetto SDK در «سنجش عملکرد» مقداردهی اولیه نمیشود، استثنایی (با دستورالعملهای اصلاح) ایجاد میشود. (I6c878، b/286228781)
- Fix OOM crash when converting ART method trace -> perfetto format. (I106bd، b/296905344)
- (Macrobenchmark) برچسب ردیابی روش هنگام پیوند دادن در خروجی آزمایش «استودیو» شفافسازی شد و نام فایلهای ردیابی روش بهگونهای اصلاح شد که در دستگاه/میزبان منحصربهفرد باشد تا هنگام اجرای بیشاز یک محک، رونویسی نشود. (I08e65, b/285912360)
- تضمین میکند که دستگاه هنگام ضبط نمایه پایه بیدار باشد. (I503fc)
نسخه 1.2.0-beta05
۳۰ اوت ۲۰۲۳
androidx.benchmark:benchmark-*:1.2.0-beta05 منتشر شد. نسخه 1.2.0-beta05 حاوی این ارسالها است.
ویژگیهای جدید
- «افزایه Gradle نمایه پایه» اکنون از «افزایه Android Gradle» نسخه ۸.۳ پشتیبانی میکند. (aosp/2715214)
نسخه 1.2.0-beta04
۲۳ اوت ۲۰۲۳
androidx.benchmark:benchmark-*:1.2.0-beta04 منتشر شد. نسخه 1.2.0-beta04 حاوی این تعهدات است.
ویژگیهای جدید
- افزایه Baseline Profiles Gradle اکنون از «افزایه Android Gradle» نسخه ۸.۳ پشتیبانی میکند. (aosp/2715214)
رفع اشکالها
- با پاکسازی بیشتر نام فایلهای خروجی و اجتناب از «=» و «:» در نام فایلهای خروجی، خرابیهای نوشتن / انتقال و کشیدن فایلها (بهویژه فایلهای مربوط به آزمایشهای پارامتریشده) را برطرف کنید. (I759d8)
نسخه 1.2.0-beta03
۹ اوت ۲۰۲۳
androidx.benchmark:benchmark-*:1.2.0-beta03 منتشر شد. نسخه 1.2.0-beta03 حاوی این تعهدات است.
تغییرات میانای برنامهسازی کاربردی
- متغیر مستقل برای فیلتر کردن
TraceSectionMetricفقط به بسته هدف اضافه شد، بهطور پیشفرض روشن است (Ia219b، b/292208786)
رفع اشکالها
- برای هماهنگی با نام آرتیفکت و مراجع دیگر، آرگومان ابزار دقیق
fullTracing.enableبهperfettoSdkTracing.enableتغییر نام داد.fullTracing.enableهمچنان بهعنوان بازگشت اضطراری کار خواهد کرد. (I7cc00) - نقاط ردیابی داخلی کتابخانه محک (ازجمله ردیابی فاز/حلقه محک خرد) اکنون در نمایشگر ردیابی سیستم Studio نشان داده میشود و در Perfetto در زیر فرایند صحیح قرار میگیرد. (I6b2e7، b/293510459)
- خطای NOT-PROFILEABLE در macrobenchmark در میانای برنامهسازی کاربردی ۳۱ به بالا برداشته شد و بررسی قابلیت نمایهسازی در دستگاههای ریشهدار eng/userdebug رد شد. (I2abac، b/291722507)
- هنگام استفاده از «بهینهسازیهای چیدمان Dex»، قوانین نمایه راهاندازی نیز اکنون بهعنوان قوانین نمایه پایه درنظر گرفته میشوند. (aosp/2684246، b/293889189)
نسخه 1.2.0-beta02
۲۶ ژوئیه ۲۰۲۳
androidx.benchmark:benchmark-*:1.2.0-beta02 منتشر شد. نسخه 1.2.0-beta02 شامل این commit-ها است.
تغییرات میانای برنامهسازی کاربردی
- میاناهای برنامهسازی کاربردی آزمایشی برای پیکربندی و سنجههای سفارشی microbench (مثلاً نمایهساز و ردیابی) اضافه شد. (I86101، b/291820856)
رفع اشکالها
- گزارش خطا در macrobench وقتی سیستمعامل برای ردیابی پیکربندی اشتباهی دارد، همانطور که اخیراً در شبیهسازهای API 26/28 ARM64 برطرف شد. (I0a328، b/282191686)
- جزئیات به خطای بازنشانی کامپایل اضافه شد تا بهروزرسانی شبیهساز پیشنهاد شود، زیرا برخیاز شبیهسازها اخیراً این مشکل را برطرف کردهاند. (I8c815، b/282191686)
androidx.test.uiautomator:uiautomator:2.2.0را بهجای وابستگیimplementation، به وابستگیapiتبدیل کنید. (I1981e)
نسخه 1.2.0-beta01
۱۸ ژوئیه ۲۰۲۳
androidx.benchmark:benchmark-*:1.2.0-beta01 منتشر شد. نسخه 1.2.0-beta01 شامل این commit-ها است.
رفع اشکالها
- رفع مشکل سرکوب شدن گاهبهگاه هشدارهای برونداد «سنجش عملکرد» در «استودیو»، و راهکار دور زدن فضاهای خالی پیشرو در برونداد «سنجش عملکرد» که در «استودیو» نشان داده نمیشود (Ia61d0، b/227205461، b/286306579، b/285912360)
- نظر
FrameTimingMetricاصلاح شد. نام زیرمتریکframeDurationCpuMsاست. (Ib097f، b/288830934).
نسخه 1.2.0-alpha16
۲۱ ژوئن ۲۰۲۳
androidx.benchmark:benchmark-*:1.2.0-alpha16 منتشر شد. نسخه 1.2.0-alpha16 شامل این تعهدات است.
تغییرات میانای برنامهسازی کاربردی
- نام میانای برنامهسازی کاربردی
BaselineProfileRule.collectBaselineProfile()بهBaselineProfileRule.collect()تغییر کرده است. (I4b665)
رفع اشکالها
- پشتیبانی Macrobenchmark برای
androidx.benchmark.profiling.mode = MethodTracing. (I7ad37، b/285912360) - نمایهسازی ریزمعیار به مرحلهای جداگانه منتقل شد، بنابراین بهصورت متوالی پساز اندازهگیری انجام میشود، نه اینکه جایگزین آن شود. اکنون بخشهای ردیابی
MethodTracingنیز در ردیابی Perfetto ضبطشده گنجانده شده است (درصورت وجود). (I9f657, b/285014599) - اندازهگیری شمارش را به
TraceSectionMetricباMode.Sumاضافه کنید. (Ic121a، b/264398606)
نسخه 1.2.0-alpha15
۷ ژوئن ۲۰۲۳
androidx.benchmark:benchmark-*:1.2.0-alpha15 منتشر شد. نسخه 1.2.0-alpha15 حاوی این تعهدات است.
ویژگیهای جدید
MemoryUsageMetricآزمایشی برای ردیابی میزان استفاده از حافظه برنامه هدف اضافه شد. (I56453، b/133147125، b/281749311)- افزودن پشتیبانی برای پیکربندیهای کاملاً سفارشی Perfetto با
PerfettoTrace.record(If9d75، b/280460183) - دارایی برای رد کردن تولید نمایه پایه اضافه شد. مصرف:
./gradlew assemble -Pandroidx.baselineprofile.skipgeneration. (I37fda, b/283447020)
تغییرات میانای برنامهسازی کاربردی
-
collectBaselineProfileAPI همیشه نمایههای مبنای پایداری تولید میکند. میانای برنامهسازی کاربردیcollectStableBaselineProfileبرداشته شده است و باید بهجای آن ازcollectBaselineProfileاستفاده شود. (I17262، b/281078707) -
filterPredicateآرگومانBaselineProfileRuleبه غیرتهی تغییر کرد، با مقدار پیشفرض معادل بهطوریکه رفتار پیشفرض فیلتر در اسناد واضحتر باشد. (I3816e)
رفع اشکالها
IsolationActivityو ردیابی Perfetto را درdryRunModeغیرفعال کنید تا عملکرد بهطور قابلتوجهی بهبود یابد، زیرا این موارد بخش عمدهای از زمان اجرا را تشکیل میدادند. (Ie4f7d)- پشتیبانی از نمونهبرداری پشته تماس در «معیارهای کلان» بااستفاده از آرگومانهای آزمایش ابزارگری
androidx.benchmark.profiling.mode=StackSamplingوandroidx.benchmark.profiling.sampleFrequency. (I1d13b، b/282188489) - خرابی هنگام رها کردن سایهزنها در Android U (میانای برنامهسازی کاربردی ۳۴) و همچنین در شبیهسازها را برطرف میکند. (I031ca، b/274314544)
نسخه 1.2.0-alpha14
۳ مه ۲۰۲۳
androidx.benchmark:benchmark-*:1.2.0-alpha14 منتشر شد. نسخه 1.2.0-alpha14 شامل این تعهدات است.
رفع اشکالها
- رفع مشکل
FrameTimingMetricدر نادیده گرفتن قابهایی که شناسه قاب ناسازگار دارند. این امر باعث میشد برخی پویانماییها در نسخههای اخیر پلاتفرم (API 31+) هنگام پویانماییRenderThread(مثلاً درطول موجدار شدن) بسیاری از فریمها را نادیده بگیرند. (I747d2, b/279088460) - تجزیه پردازنده ردیابی برای ردیابیهای بزرگتر از ۶۴ مگابایت اصلاح شد. (Ief831، b/269949822)
- مشکل تولید نمایه مبنا در Android U که بهدلیل خروجی متفاوت فرمان
pm dump-profilesناموفق بود برطرف شد. (Id1392، b/277645214) - اصلاح اسکریپت قفل کردن ساعت GPU برای مقایسه صحیح رشتهها (I53e54، b/213935715)
نسخه 1.2.0-alpha13
۵ آوریل ۲۰۲۳
androidx.benchmark:benchmark-*:1.2.0-alpha13 منتشر شد. نسخه 1.2.0-alpha13 حاوی این commit-ها است.
تغییرات میانای برنامهسازی کاربردی
- هنگام تولید نمایههای پایه، پارامتر نوع نمایه اضافه شد تا از ویژگی نمایه راهاندازی آتی پشتیبانی شود (Ie20d7، b/275093123)
- میانای برنامهسازی کاربردی آزمایشی جدید
TraceMetricبرای تعریف سنجههای کاملاً سفارشی براساس محتوای ردیابی Perfetto اضافه شد. (I4ce31، b/219851406) - سنجهای آزمایشی برای تعیین تعداد خطاهای صفحه درطول محکزنی اضافه کنید. (I48db0)
نسخه 1.2.0-alpha12
۲۲ مارس ۲۰۲۳
androidx.benchmark:benchmark-*:1.2.0-alpha12 منتشر شد. نسخه 1.2.0-alpha12 حاوی این commit-ها است.
ویژگیهای جدید
- افزایه gradle نمایه پایه جدید در نسخه آلفا منتشر شده است و تولید نمایه پایه را آسانتر میکند و گردش کار توسعهدهنده را سادهتر میکند.
تغییرات میانای برنامهسازی کاربردی
- پشتیبانی ردیابی Perfetto در میانای برنامهسازی کاربردی ۲۱ و ۲۲ برداشته شد، که شامل Microbenchmarks و میاناهای برنامهسازی کاربردی آزمایشی
PerfettoTraceمیشود. پیشاز این نسخه، اتصالهایUiAutomationدر برخی دستگاهها غیرقابلاطمینان بود. (I78e8c) - میانای برنامهسازی کاربردی آزمایشی عمومی برای
PerfettoTraceProcessorاضافه شد تا تجزیه محتوای ردگیری را فعال کند. این گامی بهسوی سنجههای کاملاً سفارشی براساس دادههای ردیابی Perfetto است. (I2659e، b/219851406)
نسخه 1.2.0-alpha11
۸ مارس ۲۰۲۳
androidx.benchmark:benchmark-*:1.2.0-alpha11 منتشر شد. نسخه 1.2.0-alpha11 حاوی این commit-ها است.
رفع اشکالها
- خرابیهای
MacrobenchmarkRuleوBaselineProfileRuleهنگام بازنصب یا استخراج نمایهها از دسته برنامه با چند فایل APK برطرف شد. (I0d8c8، b/270587281)
نسخه 1.2.0-alpha10
۲۲ فوریه ۲۰۲۳
androidx.benchmark:benchmark-*:1.2.0-alpha10 منتشر شد. نسخه 1.2.0-alpha10 حاوی این تعهدات است.
ویژگیهای جدید
- در Android 14 و نسخههای بالاتر، بهلطف ویژگی جدید پلاتفرم، «سنجش کلان» دیگر برنامههای هدف را برای بازنشانی وضعیت تدوین مجدد نصب نمیکند. قبلاً لازم بود دستگاه روتشده داشته باشید یا با حذف شدن وضعیت همه برنامهها (مثلاً ورود به سیستم کاربر) قبلاز اجرای هر محک سروکار داشته باشید. (I9b08c، b/249143766)
رفع اشکالها
- رفع مشکل
DryRunModeبرای جلوگیری از خرابی با نمایه خالی، بهدلیل رد شدن از کامپایل. درعوض، یک تکرار را اجرا میکند و نمایه را استخراج میکند تا مطمئن شود چیزی ضبط شده است. (I2f05d, b/266403227) - رفع خرابی
PowerMetricهنگام بررسی وجود powerstats در سطوح قدیمی میانای برنامهسازی کاربردی. (5faaf9، b/268253898)
نسخه 1.2.0-alpha09
۱۱ ژانویه ۲۰۲۳
androidx.benchmark:benchmark-*:1.2.0-alpha09 منتشر شد. نسخه 1.2.0-alpha09 شامل این ارسالها است.
رفع اشکالها
- انتقال
Noneبهandroidx.benchmark.enabledRulesآرگومان ابزار دقیق فعال شد تا همه معیارها / تولید نمایه پایه غیرفعال شود. (I3d7fd، b/258671856) - رفع اشکال ضبط
PerfettoTraceدر پیمانههای برنامه (یعنی APKهای آزمایشی غیرخودابزار) (I12cfc) - ترتیب آرگومان adb pull نمایه مبنا در خروجی Studio اصلاح شد (I958d1، b/261781624)
- اکنون وقتی سعی میکنید یک معیار کلان را اجرا کنید، api 33 شبیهساز بازو بهدرستی بهعنوان شبیهساز بازو شناخته میشود و هشدار را بهدرستی چاپ میکند. (69133b،b/262209591)
- Skip battery level check on devices without battery in Macrobenchmark (fe4114, b/232448937)
نسخه 1.2.0-alpha08
۷ دسامبر ۲۰۲۲
androidx.benchmark:benchmark-*:1.2.0-alpha08 منتشر شد. نسخه 1.2.0-alpha08 حاوی این ارسالها است.
تغییرات میانای برنامهسازی کاربردی
- میاناهای برنامهسازی کاربردی جدید آزمایشی
PerfettoTrace.record {}وPerfettoTraceRuleبرای ضبط ردپاهای Perfetto (که بهعنوان «ردپاهای سیستم» نیز شناخته میشود) بهعنوان بخشی از آزمایش اضافه شد تا رفتار و عملکرد آزمایش را بازرسی کنید. (I3ba16) -
BaselineProfileRuleاکنون بهجای فهرست پیشوندهای بسته، گزاره فیلتر را میپذیرد. این کار به آزمایش کنترل کامل بر فیلتر کردن میدهد. (I93240) - افزودن میانای برنامهسازی کاربردی آزمایشی
BaselineProfileRule.collectStableBaselineProfileکه تا زمانی که نمایه مبنا برای N تکرار پایدار شود منتظر میماند. (I923f3) - افزودن قابلیت مشخص کردن پیشوند نام فایل خروجی هنگام تولید نمایههای مبنا بااستفاده از
BaselineProfileRule. (I7b59f، b/260318655)
رفع اشکالها
- بهبود ایمنی نوشتن خروجی فایل، که باید از نوشته نشدن / الحاق نشدن بیصدای فایلهای خروجی جلوگیری کند، بهویژه در API 21/22. (If8c44، b/227510293)
- برونداد ردیابی
simpleperfرا اصلاح کنید تا فایل بهدرستی ایجاد و جایگذاری شود. این کار همچنین بهطور کلیتر مشکلاتی را که در آن فایل با موفقیت توسط gradle کشیده نمیشود برطرف میکند. (I12a1c، b/259424099) - پیام خطای profileinstaller که وقتی profileinstaller خیلی قدیمی است چاپ میشود بهبود یافت. اکنون بهجای اینکه بگوید پشتیبانی نمیشود، به شما میگوید نسخه profileinstaller (۱.۲.۱) را برای اندازهگیری نمایههای پایه در API 31 تا 33 بهروز کنید. (Ia517f، b/253519888)
- رفع چندین خطای فرمان پوسته در پیام onerror. چاپ میانای برنامهسازی کاربردی موردنیاز <=23، ازجمله راهاندازی ناموفق باینری ضبط perfetto و خطاهای ضبط ردیابی (Ib6b87، b/258863685)
- مرتبسازی خودکار قوانین نمایه تولیدشده برای بهحداقل رساندن تعداد تغییرات درطول زمان (هنگام اعلام حضور قوانین نمایه در کنترل منبع). (Ie2509)
- خرابی در ساختهای بدون روت در Android 13 (API 33) و پایینتر با پیام
Expected no stderr from echo 3 > /proc/sys/vm/drop_cachesبرطرف شد (I6c245، b/259508183)
مشکلات شناختهشده
- MacrobenchmarkScope.dropShaderCache() ممکن است بهدلیل وجود نداشتن ثبت همهفرستی در مانیفست profileinstaller، که هنوز منتشر نشده است، ازکار بیفتد. (I5c728، b/258619948) برای دور زدن این مشکل در profileinstaller:1.3.0-alpha02، موارد زیر را به AndroidManifest.xml برنامه خود (نه معیار سنجش خود) اضافه کنید:
<!-- workaround bug in profileinstaller 1.3.0-alpha02, remove when updating to alpha03+ -->
<receiver
android:name="androidx.profileinstaller.ProfileInstallReceiver"
android:permission="android.permission.DUMP"
android:exported="true">
<intent-filter>
<action android:name="androidx.profileinstaller.action.BENCHMARK_OPERATION" />
</intent-filter>
</receiver>
نسخه 1.2.0-alpha07
۹ نوامبر ۲۰۲۲
androidx.benchmark:benchmark-*:1.2.0-alpha07 منتشر شد. نسخه 1.2.0-alpha07 حاوی این commit-ها است.
تغییرات میانای برنامهسازی کاربردی
-
PowerMetricAPI را برای اندازهگیری انرژی و توان در Macrobenchmarks اضافه میکند. (Ife601، b/220183779) - مشکل
MacrobenchmarkScope.dropShaderCache()برای حذف واقعی حافظه نهان سایهزن برطرف شد. این کار حدود ۲۰ میلیثانیه از نویز را از محکهایStartupMode.COLDحذف میکند، زیرا سایهزنها اکنون بهطور مداوم در هر تکرار پاک میشوند. قبلاً، کامپایلPartialبااستفاده از تکرارهای آمادهسازی، اعداد سریع نادرستی را گزارش میکرد، زیرا احتمال وقوع ذخیره سایهزن در حافظه نهان درطول آمادهسازی بیشتر بود. این اصلاح به دستگاه روتشده یا استفاده ازprofileinstaller:1.3.0-alpha02در برنامه هدف نیاز دارد. برای تغییرات «میانای برنامهسازی کاربردی» کتابخانهProfileInstaller، لطفاً به صفحه ProfileInstaller 1.30-alpha02 مراجعه کنید. (Ia5171، b/231455742) TraceSectionMode("label", Mode.Sum)اضافه شد که امکان اندازهگیری کل زمان صرفشده در بخشهای ردیابی متعدد با برچسب یکسان را فراهم میکند. برای مثال،TraceSectionMetric("inflate", Mode.Sum)سنجهinflateMsرا برای کل زمان صرفشده در معیار سنجش کلان برای تورم گزارش خواهد کرد. همچنین شرط میانای برنامهسازی کاربردی ۲۹ برداشته شد، زیراTraceSectionMetricباandroidx.tracing.Traceبرای سطوح پایینتر میانای برنامهسازی کاربردی بااستفاده ازforceEnableAppTracingدر برنامه هدف کار میکند. (Id7b68، b/231455742)
رفع اشکالها
- ایمنی همه فرمانهای پوسته داخلی با اعتبارسنجی همه خروجیها/خطاها بهبود یافته است. (I5984d، b/255402908، b/253094958)
- دستگاه را در فرمان
adb pullنمایه مبنا مشخص کنید تا اگر چند دستگاه متصل است (حداکثر یک شبیهساز)، فرمان pull بهراحتی کپی شود (I6ac6c، b/223359380) - اگر فایل apk آزمایش بنچمارک کلان بهعنوان خودابزار تنظیم نشده باشد، خطا اضافه میشود. این خطا از اجرای محکزنی کلان در فرایند برنامه هدف جلوگیری میکند. در این فرایند، macrobench نمیتواند برنامه را کامپایل/متوقف/شروع سرد کند، یا اجازههای خودش را کنترل کند (I4279b)
- مشکلی در
measureRepeated()برطرف شد که باعث میشدStartupMode.COLDفرایند هدف را پسازsetupBlockمتوقف نکند. اکنونsetupBlockتعامل با برنامه باعث نمیشود که فرایند برنامه درحال اجرا باقی بماند و اندازهگیری شروع سرد نامعتبر باشد. (I8ebb7)
نسخه 1.2.0-alpha06
۲۴ اکتبر ۲۰۲۲
androidx.benchmark:benchmark-*:1.2.0-alpha06 منتشر شد. نسخه 1.2.0-alpha06 حاوی این commitها است.
تغییرات میانای برنامهسازی کاربردی
-
BaselineProfileRuleدیگر در Android 13 (میانای برنامهسازی کاربردی ۳۳) به روت نیاز ندارد و دیگر آزمایشی نیست. (Ie0a7d، b/250083467، b/253094958)- این تغییر همچنین نحوه انتقال نمایههای برنامه به دیسک در دستگاههای روتنشده را اصلاح میکند، اما مستلزم بهروزرسانی وابستگی profileinstaller برنامه هدف است.
- برای استفاده از
BaselineProfileRuleیاCompilationMode.Partial(warmupIterations)در دستگاه روتنشده، باید برنامه هدف را نیز بهروز کنید تا ازandroidx.profileinstaller.profileinstaller:1.3.0-alpha01استفاده کند. این کار باعث میشود نمایه بهدرستی در دیسک ذخیره شود تا بتوان آن را استخراج/گردآوری کرد.
رفع اشکالها
- خرابی
SampledProfilingدر میانای برنامهسازی کاربردی ۳۳+ برطرف شد. (I40743، b/236109374)
نسخه 1.2.0-alpha05
۵ اکتبر ۲۰۲۲
androidx.benchmark:benchmark-*:1.2.0-alpha05 منتشر شد. نسخه 1.2.0-alpha05 حاوی این ارسالها است.
رفع اشکالها
- رفع خرابی قاب در بیننده ردیابی سیستم «استودیو» برای ردیابیهای ضبطشده معیار (I3f3ae، b/239677443)
- Correct
FrameTimingMetricto listFrameOverrunas requiring API 31 instead of 29 (I716dd, b/220702554) - تکرار را در
BaselineProfileRuleتنظیم کنید و اگر بسته هدف نصب نشده است، بهوضوح خطا را نشان دهید (قبلاً برای MacrobenchmarkRule انجام شده است). (Ic09a3, b/227991471)
نسخه 1.2.0-alpha04
۲۱ سپتامبر ۲۰۲۲
androidx.benchmark:benchmark-*:1.2.0-alpha04 منتشر شد. نسخه 1.2.0-alpha04 شامل این commitها است.
ویژگیهای جدید
برای توسعه محلی سریعتر و اعتبارسنجی خودکارسازی برنامه (برای نمونه در پیشارسال)، از آرگومان ابزار دقیق
dryRunMode.enableدر macrobenchmark (که ازقبل در micro دردسترس است) پشتیبانی کنید. این کار تکرارها را به ۱ لغو میکند، از همگردانی صرفنظر میکند، همه خطاهای پیکربندی را سرکوب میکند، و برونداد فایل .json اندازهگیری را غیرفعال میکند. (Ib51b4، b/175149857)در خط فرمان Gradle:
./gradlew macrobenchmark:cC -P android.testInstrumentationRunnerArguments.androidx.benchmark.dryRunMode.enable=trueدر build.gradle:
android { defaultConfig { testInstrumentationRunnerArgument 'androidx.benchmark.dryRunMode.enable', 'true' } }
رفع اشکالها
StartupTimingMetricاصلاح شد تا دیگر نیازی به راهاندازی «فعالیتهای» اندازهگیریشده ازطریقMacrobenchmarkScope.startActivityAndWait()نباشد. این یعنی این سنجه میتواند راهاندازیها را از مثلاً اعلانها،Context.startActivity()، پیمایش مبتنی بر «فعالیت» درونبرنامه، یا فرمانهای پوسته دریافت کند. (Ia2de6، b/245414235)- رفع اشکالی که در آن
startActivityAndWaitهنگام تلاش برای انتظار برای تکمیل راهاندازی در شبیهسازها با کاهش سختگیری تشخیص قاب، زمانبندی را ازدست میداد. (Ibe2c6، b/244594339، b/228946895)
نسخه 1.2.0-alpha03
۷ سپتامبر ۲۰۲۲
androidx.benchmark:benchmark-*:1.2.0-alpha03 منتشر شد. نسخه 1.2.0-alpha03 شامل این تعهدات است.
ویژگیهای جدید
- میاناهای برنامهسازی کاربردی آزمایشی برای استفاده مستقل از
BenchmarkState، جدا ازBenchmarkRule/JUnit4، اضافه شد. (Id478f، b/228489614)
رفع اشکالها
- فایل جایگزین احتیاطی «تماشای آسان» برای
startActivityAndWaitاضافه شد. (01ed77، b/242899915)
نسخه 1.2.0-alpha02
۲۴ اوت ۲۰۲۲
androidx.benchmark:benchmark-*:1.2.0-alpha02 منتشر شد. نسخه 1.2.0-alpha02 شامل این تعهدات است.
تغییرات میانای برنامهسازی کاربردی
- پیشفرض روی
am force stopبرایMacrobenchmarkScope.killProcess()، حتی درصورت ریشهیابی، بهجز درطول تولید «نمایه مبنا». این را میتوان با یک شناسه بولی اختیاری لغو کرد. (02cce9، b/241214097)
رفع اشکالها
- پشتیبانی از تولید نمایه پایه برای برنامههای «سیستم». (I900b8، b/241214097)
- پشتیبانی از بررسی سنجههای مصرف برق ODPM در دستگاههای روتنشده. (a38c78، b/229623230)
نسخه 1.2.0-alpha01
۲۷ ژوئیه ۲۰۲۲
androidx.benchmark:benchmark-*:1.2.0-alpha01 منتشر شد. نسخه 1.2.0-alpha01 حاوی این commit-ها است.
ویژگیهای جدید
- عنصر جدید tracing-perfetto-common که به ابزارها امکان میدهد ردیابی «کیت توسعه نرمافزار Perfetto» را در برنامهای که آن را نمایان میکند فعال کنند (I2cc7f)
androidx.benchmark.enabledRulesآرگومان ابزار دقیق اضافه شد تا اجرای سنجش کلان براساس فقط سنجشها یا فقط تولید نمایههای پایه فیلتر شود. برای اجرای فقط یک نوع آزمایش، مثلاً وقتی فقطBaselineProfilesدر شبیهساز تولید میشود، «Macrobenchmark» یا «BaselineProfile» را ارسال کنید. فهرست جداشده با کاما نیز پشتیبانی میشود. (I756b7، b/230371561)برای مثال، در build.gradle مربوط به macrobenchmark شما:
android { defaultConfig { testInstrumentationRunnerArgument 'androidx.benchmark.enabledRules', 'BaselineProfile' } }یا از خط فرمان Gradle:
./gradlew macrobenchmark:cC -P android.testInstrumentationRunnerArguments.androidx.benchmark.enabledRules=BaselineProfile
تغییرات میانای برنامهسازی کاربردی
-
PowerMetricجدیدی برای اندازهگیری انرژی و توان تکالیف در محکها اضافه شد. (I9f39b، b/220183779) - حالت کامپایل جدید
CompilationMode.Ignoreبرای رد شدن از بازنشانی نمایه و کامپایل اضافه شد. (Ibbcf8, b/230453509) - پارامتر جدیدی به
BaselineProfileRule#collectBaselineProfileاضافه شد تا فایل خروجی براساس نام بستهها فیلتر شود (If7338، b/220146561) - به توسعهدهنده امکان میدهد شارژ دستگاه را تخلیه کند تا میزان مصرف برق را اندازهگیری کند. (I6a6cb)
- امکان پاک کردن حافظه نهان سایهزن در
MacrobenchmarkScopeاضافه شد. (I32122) - به توسعهدهنده امکان میدهد نمایش نوع سنجه و جزئیات دستههای زیرسیستم موردنظر را پیکربندی کند. (I810c9)
- قبلاً اگر محکزنی در دستگاه پشتیبانینشدهای اجرا میشد،
UnsupportedOperationExceptionایجاد میشد. اکنون UOE فقط درصورتی رخ میدهد که سنجه در دستگاه پشتیبانینشده (یعنیPowerMetric.configure) استفاده شود. (I5cf20، b/227229375) -
TotalPowerMetricوTotalEnergyMetricبرای اندازهگیری توان و انرژی کل در هر دسته سیستم در معیارسنجهای کلان اضافه شد. (I3b26b، b/224557371)
رفع اشکالها
- مشکلی که باعث میشد روشهای کامپایلشده بهدرستی بین هر محک کلان در نسخههای روتنشده بازنشانی نشوند برطرف شد. متأسفانه این کار مستلزم بازنصب کردن apk در هر تکرار است که دادههای برنامه را برای هر macrobenchmark پاک میکند. (I31c74، b/230665435)
- رفع خرابی ضبط ردیابی در API 21/22 (If7fd6، b/227509388، b/227510293، b/227512788)
- Overhaul activity launch completion detection to fix 'Unable to read any metrics' exception in startup macrobenchmarks. (Ia517c)
نسخه ۱.۱.۱
نسخه ۱.۱.۱
۹ نوامبر ۲۰۲۲
androidx.benchmark:benchmark-*:1.1.1 منتشر شد. نسخه ۱.۱.۱ حاوی این تعهدات است.
رفع اشکالها
-
android.system.ErrnoException: open failed: EACCESرا که در برخیاز دستگاههای Android11 (میانای برنامه کاربردی ۳۰) و بالاتر رخ میداد برطرف میکند. این یک انتخاب اصلاح از1.2.0-alpha01است. (aosp/2072249)
نسخه ۱.۱.۰
نسخه ۱.۱.۰
۱۵ ژوئن ۲۰۲۲
androidx.benchmark:benchmark-*:1.1.0 منتشر شد. نسخه ۱.۱.۰ حاوی این ارسالها است.
- این نسخه با
androidx.benchmark:benchmark-*:1.1.0-rc03یکسان است.
تغییرات مهم از نسخه ۱.۰.۰
پشتیبانی از Jetpack Macrobenchmarks که به شما امکان میدهد تعاملات کل برنامه مانند راهاندازی و پیمایش را اندازهگیری کنید، قابلیت ضبط ردیابیها و اندازهگیری بخشهای ردیابی را فراهم میکند.
پشتیبانی از نمایههای مبنا
CompilationMode.Partialبرای اندازهگیری اثربخشی «نمایههای مبنا».@BaselineProfileRuleبرای تولید خودکار «نمایههای مبنا» برای یک مسیر قطعی کاربر معین.
پشتیبانی از سنجههای «تخصیص» و نمایهسازی درطول اجرای Microbenchmark.
نسخه 1.1.0-rc03
۱ ژوئن ۲۰۲۲
androidx.benchmark:benchmark-*:1.1.0-rc03 منتشر شد. نسخه 1.1.0-rc03 حاوی این تعهدات است.
رفع اشکالها
از نصب مجدد بسته هدف در هر تکرار معیار اجتناب کنید. ( aosp/2093027، b/231976084)
تأخیر
300msرا ازpressHome()بردارید. (aosp/2086030، b/231322975)بهبود سرعت تکرار Macrobenchmark با بهینهسازی فرمانهای Shell که در پشت صحنه استفاده میشود. (aosp/2086023، b/231323582)
پشتیبانی از «دستگاههای Gradle مدیریتشده» هنگام تولید «نمایههای مبنا» با «کلانمعیارها». (aosp/2062228، b/228926421)
نسخه 1.1.0-rc02
۱۱ مه ۲۰۲۲
androidx.benchmark:benchmark-*:1.1.0-rc02 منتشر شد. نسخه 1.1.0-rc02 حاوی این commit-ها است.
- توجه داشته باشید که این نسخه شامل تغییر رفتار است، زیرا اکنون برنامهها بین هر محکزنی بهطور کامل بازنصب میشوند تا از اندازهگیریهای دقیق اطمینان حاصل شود.
رفع اشکال/تغییرات رفتاری
مشکلی که باعث میشد کامپایل برنامه بین محکهای کلان بهدرستی بازنشانی نشود و در نسخههای ریشهنشده اصلاً بازنشانی نشود برطرف شد. این کار بسیاری از مواردی را که اجرای چندین آزمایش منجر به تأثیر کم یا عدم تأثیر
CompilationModeبر اندازهگیریها میشود برطرف میکند. برای دور زدن این مشکل، برنامه هدف اکنون هر روش آزمایش را بهطور کامل بازنصب میکند که باعث پاک شدن دادههای برنامه بین هر ریزمعیار میشود. (I31c74، b/230665435)ازآنجاییکه این کار مانع از راهاندازی وضعیت برنامهها قبلاز آزمایش میشود، اکنون میتوان از گردآوری / بازنصب کردن رد شد تا بتوان این مشکل را حل کرد. برای مثال، میتوانید هدف را بهطور کامل با فرمان پوسته
cmd package compile -f -m speed <package>کامپایل کنید و سپس از مرحله کامپایل macrobenchmark عبور کنید.برای نمونه در build.gradle مربوط به macrobenchmark:
android { defaultConfig { testInstrumentationRunnerArgument 'androidx.benchmark.compilation.enabled, 'false' } }یا از خط فرمان Gradle:
./gradlew macrobenchmark:cC -P android.testInstrumentationRunnerArguments.androidx.benchmark.compilation.enabled=falseبا افزودن آرگومان ابزار دقیق
androidx.benchmark.enabledRules، امکان همرسانی کردن یک ماژول بین محکهای کلان و آزمایشهای تولید نمایه مبنا فراهم شد. برای اجرای فقط یک نوع آزمایش، مثلاً هنگام تولیدBaselineProfilesدر شبیهساز، «Macrobenchmark» یا «BaselineProfile» را ارسال کنید. (I756b7، b/230371561)برای مثال، در build.gradle «ریزمعیار شما»:
android { defaultConfig { testInstrumentationRunnerArgument 'androidx.benchmark.enabledRules', 'BaselineProfile' } }یا از خط فرمان Gradle:
./gradlew macrobenchmark:cC -P android.testInstrumentationRunnerArguments.androidx.benchmark.enabledRules=BaselineProfile
نسخه 1.1.0-rc01
۲۰ آوریل ۲۰۲۲
androidx.benchmark:benchmark-*:1.1.0-rc01 منتشر شد. نسخه 1.1.0-rc01 حاوی این تعهدات است.
رفع اشکالها
- پیوندهای برونداد نمایه پایه در «استودیو Android» اکنون از نام فایل یکتا استفاده میکنند. بهاینترتیب، خروجی همیشه جدیدترین نتایج استفاده از
BaselineProfileRuleرا منعکس میکند. ( aosp/2057008، b/228203086 )
نسخه 1.1.0-beta06
۶ آوریل ۲۰۲۲
androidx.benchmark:benchmark-*:1.1.0-beta06 منتشر شد. نسخه 1.1.0-beta06 حاوی این commit-ها است.
رفع اشکالها
- رفع خرابی ضبط ردیابی در API 21/22 (If7fd6، b/227509388)
- اصلاح کامل تشخیص تکمیل راهاندازی فعالیت برای رفع استثنای «هیچ سنجهای خوانده نشد» در بنچمارکهای کلان راهاندازی. (Ia517c)
- سنجههای راهاندازی برای Macrobenchmarks هنگام استفاده از
CompilationMode.None()اصلاح شد. پیشاز این تغییر،CompilationMode.Partial()کندتر ازCompilation.None()بهنظر میرسید. (611ac9).
نسخه 1.1.0-beta05
۲۳ مارس ۲۰۲۲
androidx.benchmark:benchmark-*:1.1.0-beta05 منتشر شد. نسخه 1.1.0-beta05 شامل این commit-ها است.
رفع اشکالها
- هنگام استفاده از
CompilationMode.None، پساز رد شدن از نصب نمایه، بسته را متوقف کنید. (aosp/1991373) - مشکلی که باعث میشد Macrobenchmarks هنگام استفاده از
StartupMode.COLDنتواند سنجههای راهاندازی را جمعآوری کند برطرف شد. (aosp/2012227 b/218668335)
نسخه 1.1.0-beta04
۲۳ فوریه ۲۰۲۲
androidx.benchmark:benchmark-*:1.1.0-beta04 منتشر شد. نسخه 1.1.0-beta04 حاوی این تعهدات است.
رفع اشکالها
رفع مشکل معیارهای ازدسترفته در Android 10، و
NoSuchElementExceptionکه بهدلیل ثبت نادرست نامهای فرایند در ردیابیها ایجاد شده بود. (Ib4c17، b/218668335)از
PowerManagerبرای تشخیص محدودسازی حرارتی در Q (API 29) و بالاتر استفاده کنید. این کار بهطور قابلتوجهی دفعات مثبتهای کاذب در تشخیص محدودسازی حرارتی را کاهش میدهد (امتحان مجدد معیار پساز ۹۰ ثانیه خنکسازی)، و معیارها را در ساختهای کاربر بهطور قابلتوجهی تسریع میکند. همچنین، حتی زمانی که ساعتها قفل هستند، تشخیص دریچه گاز را ارائه میدهد (اگر برای محیط فیزیکی دستگاه خیلی بالا قفل شده باشند). (I9c027، b/217497678، b/131755853)فیلتر کردن نمونهبرداری ساده simpleperf فقط برای
measureRepeatedرشته برای ساده کردن بازرسی (Ic3e12، b/217501939)پشتیبانی از سنجههای زیرفرایندهای میانای کاربر نامگذاریشده در برنامههای چندفرایندی (Ice6c0، b/215988434)
قوانین «نمایه پایه» را فیلتر کنید تا Android 9 (کیت توسعه نرمافزار ۲۸) را هدفیابی کنید. aosp/1980331 b/216508418
هنگام استفاده از
Compilation.None()، از نصب نمایه رد شوید. علاوهبراین، وقتی برنامه از نسخه قدیمیترandroidx.profileinstallerو «افزایه Android Gradle» استفاده میکند، هشدارهایی گزارش میشود. aosp/1977029
نسخه 1.1.0-beta03
۹ فوریه ۲۰۲۲
androidx.benchmark:benchmark-*:1.1.0-beta03 منتشر شد. نسخه 1.1.0-beta03 حاوی این تعهدات است.
تغییرات میانای برنامهسازی کاربردی
AudioUnderrunMetricبه کتابخانه macrobenchmark تحت پرچم آزمایشی اضافه شد تا امکان تشخیص کمبود داده صوتی فراهم شود (Ib5972)
BaselineProfileRuleدیگر بلوکsetupرا نمیپذیرد زیرا این بلوک عملکردی مشابهprofileBlockدارد. (Ic7dfe، b/215536447)مثلاً
@Test fun collectBaselineProfile() { baselineRule.collectBaselineProfile( packageName = PACKAGE_NAME, setupBlock = { startActivityAndWait() }, profileBlock = { // ... } ) }@Test fun collectBaselineProfile() { baselineRule.collectBaselineProfile( packageName = PACKAGE_NAME, profileBlock = { startActivityAndWait() // ... } ) }
رفع اشکالها
- مشکل عدم بهروزرسانی ردیابیهای نمایهساز ریزمعیار در اجراهای بعدی هنگام پیوند دادن در خروجی Studio برطرف شد (I5ae4d، b/214917025)
- جلوگیری از دستورات پوسته گردآوری در API 23 (Ice380)
-
FrameCpuTimeبهFrameDurationCpuوFrameUiTimeبهFrameDurationUiتغییر نام داده شد تا مشخص شود اینها مدت زمان هستند نه مُهر زمان و با پیشوندها مطابقت داشته باشند. (I0eba3، b/216337830)
نسخه 1.1.0-beta02
۲۶ ژانویه ۲۰۲۲
androidx.benchmark:benchmark-*:1.1.0-beta02 منتشر شد. نسخه 1.1.0-beta02 شامل این تعهدات است.
رفع اشکالها
- نتایج «نمونهبرداری پشتهای میکروآزمون / نمایه ردیابی روش» اکنون در برونداد Studio پیوند داده شده است، مشابه با دیگر بروندادهای نمایهبندی، و سنجه تخصیص را سرکوب نمیکند. (Idcb65، b/214440748، b/214253245)
- BaselineProfileRule اکنون فرمان
adb pullرا در logcat و خروجی Studio برای کشیدن فایل نوشتاری BaselineProfile تولیدشده چاپ میکند. (f08811)
نسخه 1.1.0-beta01
۱۲ ژانویه ۲۰۲۲
androidx.benchmark:benchmark-*:1.1.0-beta01 منتشر شد. نسخه 1.1.0-beta01 حاوی این تعهدات است.
رفع اشکالها
- مشکل نادیده گرفته شدن فعالسازی متغیر مستقل نمایهساز را برطرف میکند. (I37373، b/210619998)
-
CompliationModesمنسوخشده برداشته شد (I98186، b/213467659) - Switched baseline profile arg of
CompilationMode.Partialto enum for clarity. (Id67ea)
نسخه 1.1.0-alpha13
۱۵ دسامبر ۲۰۲۱
androidx.benchmark:benchmark-*:1.1.0-alpha13 منتشر شد. نسخه 1.1.0-alpha13 شامل این commit-ها است.
تغییرات میانای برنامهسازی کاربردی
- «ردگیری سیستم» با سربار کم را به خروجی ریزسنجش در Android Q (میانای برنامهسازی کاربردی ۲۹+) اضافه کنید. توجه داشته باشید که این ویژگی درحالحاضر ردگیری سفارشی (ازطریق میاناهای برنامهسازی کاربردی
android.os.Traceیاandroidx.tracingJetpack) را ضبط نمیکند تا بر نتایج تأثیر نگذارد. این ردیابی باید در تشخیص ناپایداری، بهویژه از منابع خارج از محک، مفید باشد. (I298be، b/205636583، b/145598917) CompilationModesرا به سه کلاس «کامل»، «هیچ»، و «جزئی» تقسیم کنید. قبلاً نامگذاری آنها بهطور ناهماهنگ براساس آرگومانهای گردآوری (که اکنون آنها را بهعنوان جزئیات پیادهسازی درنظر میگیریم) و ویژگیها انجام میشد. این کار باعث میشود که مبادلات، ترکیبهای بالقوه، و رفتار در نسخههای پلاتفرم واضحتر شود. (I3d7bf، b/207132597)- راهاندازی و اندازهگیری اکنون همیشه بهصورت جفت و بهترتیب هستند. اکنون میتوانید نام بسته و تکرار را جستجو کنید (هرچند ممکن است تکرار در برخی سناریوهای آمادهسازی
nullباشد). (Id3b68، b/208357448، b/208369635)
رفع اشکالها
- مشکل
CompilationMode.Speedکه بهاشتباه بهعنوانNoneدرنظر گرفته میشد برطرف شد (I01137)
نسخه 1.1.0-alpha12
۱۷ نوامبر ۲۰۲۱
androidx.benchmark:benchmark-*:1.1.0-alpha12 منتشر شد. نسخه 1.1.0-alpha12 حاوی این commitها است.
ویژگیهای جدید
- افزودن TraceSectionMetric آزمایشی برای اندازهگیریهای زمانبندی سفارشی مبتنی بر ردیابی. (I99db1، b/204572664)
رفع اشکالها
- دستگاه را در هر تکرار بیدار کنید تا مطمئن شوید واسط کاربر قابلآزمایش است - نیاز به غیرفعال کردن صفحه قفل دارد. (Ibfa28، b/180963442)
- چندین خرابی در حالت نمایهسازی StackSampling در شبیهسازها و دستگاههای روتنشده برطرف شد (Icdbda، b/202719335)
- ۰٫۵ ثانیه خواب در پایان هر تکرار برداشته شد - اگر با این تغییر سنجههای مفقودشدهای میبینید، لطفاً اشکال را ثبت کنید. (Iff6aa)
- احتمال ازدست رفتن دادهها را کاهش دهید و سربار حافظه را از ردیابی کاهش دهید (Id2544، b/199324831، b/204448861)
- با رفتن به قالب ذخیرهسازی sched فشرده، اندازه ردگیری را حدود ۴۰٪ کاهش دهید. (Id5fb6، b/199324831)
- پیادهسازیهای بهروزشده سنجههای راهاندازی برای اینکه همیشه در پایان رشته رندر تمام شوند. این کار باعث میشود در نسخههای مختلف پلاتفرم سازگاری بیشتری وجود داشته باشد و با اندازهگیریهای درونبرنامهای مطابقت بیشتری داشته باشد. (Ic6b55)
نسخه 1.1.0-alpha11
۳ نوامبر ۲۰۲۱
androidx.benchmark:benchmark-*:1.1.0-alpha11 منتشر شد. نسخه 1.1.0-alpha11 حاوی این تعهدات است.
تغییرات میانای برنامهسازی کاربردی
- Macrobenchmark اکنون
minSdkVersionاز23دارد. (If2655) BaselineProfileRuleآزمایشی جدیدی اضافه میکند که میتواند نمایههای مبنا برای مسیر قطعی کاربر برنامه تولید کند. اسناد دقیق بهزودی ارائه میشود. (Ibbefa، b/203692160)- گونه میانای measureRepeated را که برای تماسگیرندگان جاوا اضافه شده بود برمیدارد، زیرا باعث ابهام در تکمیل/حل کردن روش میشد. تماسگیرندگان Java دوباره باید Unit.Instance را از measureRepeated برگردانند. اگر این موضوع برایتان دردسرساز است، لطفاً اشکالی را ثبت کنید تا بتوانیم در نسخه بعدی آن را بررسی کنیم. (Ifb23e، b/204331495)
نسخه 1.1.0-alpha10
۲۷ اکتبر ۲۰۲۱
androidx.benchmark:benchmark-*:1.1.0-alpha10 منتشر شد. نسخه 1.1.0-alpha10 حاوی این تعهدات است.
تغییرات میانای برنامهسازی کاربردی
- StartupTimingMetric به API 23 برگردانده شود. این پیادهسازی جدید همچنین reportFullyDrawn() را بهتر مدیریت میکند تا منتظر بماند تا محتوای مربوطه ارائه شود. (If3ac9، b/183129298)
- JvmOverloads به چندین روش MacrobenchmarkScope برای تماسگیرندگان Java اضافه شد. (I644fe، b/184546459)
- تابع MacrobenchmarkRule.measureRepeated جایگزینی ارائه دهید که از
Consumer<MacrobenchmarkScope>برای استفاده اصطلاحی در زبان جاوا استفاده میکند. (If74ab، b/184546459)
رفع اشکالها
- رفع مشکل شروع نشدن ردگیریها بهاندازه کافی زود و نبود دادههای سنجه. انتظار میرود این کار استثناهای «ناتوان در خواندن سنجهها درطول محک» را که توسط خود کتابخانه ایجاد شدهاند برطرف کند. (I6dfcb، b/193827052، b/200302931)
- FrameNegativeSlack به FrameOverrun تغییر نام داده است تا معنی آن واضحتر شود - یعنی اینکه فریم چقدر از بودجه زمانی خود فراتر رفته است. (I6c2aa، b/203008701)
نسخه 1.1.0-alpha09
۱۳ اکتبر ۲۰۲۱
androidx.benchmark:benchmark-*:1.1.0-alpha09 منتشر شد. نسخه 1.1.0-alpha09 شامل این تعهدات است.
رفع اشکالها
- پشتیبانی از حذف حافظه نهان صفحه «هسته» بدون روت در API 31/S+، که دقت راهاندازیهای StartupMode.COLD را افزایش میدهد. (Iecfdb، b/200160030)
نسخه 1.1.0-alpha08
۲۹ سپتامبر ۲۰۲۱
androidx.benchmark:benchmark-*:1.1.0-alpha08 منتشر شد. نسخه 1.1.0-alpha08 حاوی این ارسالها است.
تغییرات میانای برنامهسازی کاربردی
- فعال کردن پیمایش macrobenchmarks برای اجرا در API 23 (If39c2، b/183129298)
- Add new type of sampled metric to UI and JSON output, focused on percentiles of multiple samples per iteration. (I56247، b/199940612)
- جابهجایی به سنجههای ممیز شناور در سراسر کتابخانههای محک (در واسط کاربر «استودیو» کوتاه شده است). (I69249، b/197008210)
نسخه 1.1.0-alpha07
۱ سپتامبر ۲۰۲۱
androidx.benchmark:benchmark-*:1.1.0-alpha07 منتشر شد. نسخه 1.1.0-alpha07 حاوی این commit-ها است.
تغییرات میانای برنامهسازی کاربردی
- حداقل سطح میانای برنامهسازی کاربردی به ۲۱ افزایش یافت تا نشاندهنده پایینترین سطح میانای برنامهسازی کاربردی باشد که قرار است در آینده پشتیبانی شود. حداقل میانای برنامهسازی کاربردی پشتیبانیشده فعلی همچنان ازطریق RequiredApi() منتقل میشود و درحالحاضر ۲۹ است (I440d6، b/183129298)
رفع اشکالها
-
ProfileInstallerرا اصلاح میکند تا اجرای MacroBenchmarks بااستفاده ازCompilationMode.BaselineProfileبرای برنامههایی که از نمایههای مبنا استفاده میکنند آسانتر شود. (I42657، b/196074999) توجه: همچنین باید بهandroidx.profileinstaller:profileinstaller:1.1.0-alpha04یا بالاتر بهروزرسانی شود. -
StartupMode.COLD+CompilationMode.Noneمحکزنی اکنون پایدارتر است. (I770cd، b/196074999)
نسخه 1.1.0-alpha06
۱۸ اوت ۲۰۲۱
androidx.benchmark:benchmark-*:1.1.0-alpha06 منتشر شد. نسخه 1.1.0-alpha06 حاوی این commit-ها است.
تغییرات میانای برنامهسازی کاربردی
- آرگومان ابزار دقیق
androidx.benchmark.iterationsاضافه شد تا امکان لغو دستی تعداد تکرارها هنگام آزمایش/نمایهسازی محلی فراهم شود. (6188be، b/194137879)
رفع اشکالها
- Switched to Simpleperf as default sampling profiler on API 29+. (Ic4b34, b/158303822)
مشکلات شناختهشده
- کار روی
CompilationMode.BaselineProfileهمچنان ادامه دارد. درحالحاضر از آن برای تعیین اینکه نمایه چقدر خوب است استفاده نکنید.
نسخه 1.1.0-alpha05
۴ اوت ۲۰۲۱
androidx.benchmark:benchmark-*:1.1.0-alpha05 منتشر شد. نسخه 1.1.0-alpha05 حاوی این commit-ها است.
1.1.0-alpha04 was cancelled before release due to a sporatic crash. b/193827052
تغییرات میانای برنامهسازی کاربردی
- startActivityAndWait را برای فراخوانی راهاندازی ازطریق
am startتغییر دادیم که زمان هر تکرار اندازهگیری را تقریباً ۵ ثانیه کاهش میدهد، اما دیگر از intent parcelables پشتیبانی نمیکند. (I5a6f5، b/192009149
رفع اشکالها
- کاهش تهاجمی بودن تشخیص دریچه حرارتی، و محاسبه مجدد خط مبنا درصورت تشخیص مکرر دریچهها. (I7327b)
- FrameTimingMetric را اصلاح میکند تا در نسخه بتای Android S کار کند (Ib60cc، b/193260119)
- از
EmptyActivityبرای خارج کردن برنامه هدف از حالت توقف اجباری استفاده کنید تا ازCompilationMode.BaselineProfileبهتر پشتیبانی شود. (Id7cac، b/192084204) - پسوند فایل ردیابی به
.perfetto-traceتغییر کرد تا با استاندارد پلاتفرم مطابقت داشته باشد. (I4c236، b/174663039) - StartupTimingMetric اکنون سنجه «fullyDrawnMs» را برای اندازهگیری زمان تا تکمیل پرداز برنامه برونداد میکند. برای تعریف این سنجه برای برنامهتان، وقتی محتوای اولیهتان آماده است، مثلاً وقتی موارد فهرست اولیهتان از DB یا شبکه بار میشود، Activity.reportFullyDrawn را فراخوانی کنید. (روش reportFullyDrawn بدون بررسی نسخه ساخت در ComponentActivity دردسترس است). توجه داشته باشید که آزمایشتان باید بهاندازه کافی اجرا شود تا سنجه را ضبط کند (startActivityAndWait منتظر reportFullyDrawn نمیماند). (If1141، b/179176560)
- کاهش هزینه افزودن فرادادههای Ui به ردگیریها بهمیزان بیشاز ۵۰ میلیثانیه (Ic8390، b/193923003)
- وقتی ردیابی متوقف میشود، دفعات نمونهگیری بهشدت افزایش مییابد که میتواند زمان اجرای معیار سنجش را برای نمونه، در زمان راهاندازی تا بیشاز ۳۰٪ کاهش دهد (Idfbc1، b/193723768)
نسخه 1.1.0-alpha03
۱۶ ژوئن ۲۰۲۱
androidx.benchmark:benchmark-*:1.1.0-alpha03 منتشر شد. نسخه 1.1.0-alpha03 حاوی این commit-ها است.
ویژگیهای جدید
CompilationMode.BaselineProfileجدیدی برای پشتیبانی از نمایههای نصبشده بااستفاده از کتابخانه Jetpack ProfileInstaller اضافه شد. (aosp/1720930)
رفع اشکالها
نمونه کد Gradle برای سرکوب خطاهای محک بهروز شده است تا از میانای برنامهسازی کاربردی منسوخنشده با نحوی استفاده کند که از کاربران .gradle.kts نیز پشتیبانی میکند.
برای نمونه
testInstrumentationRunnerArguments["androidx.benchmark.suppressErrors"] = "EMULATOR,LOW-BATTERY"
نسخه 1.1.0-alpha02
۱۸ مه ۲۰۲۱
نسخه محک ۱.۱.۰-آلفا۰۲ مؤلفه بزرگی به محک اضافه میکند - «محک کلان». علاوهبر معیار سنجش که به شما امکان میدهد حلقههای CPU را اندازهگیری کنید، معیار سنجش کلان به شما امکان میدهد تعاملهای کل برنامه مثل راهاندازی و پیمایش را اندازهگیری کنید و ردگیریها را ضبط کنید. برای اطلاعات بیشتر، مستندات کتابخانه را ببینید.
androidx.benchmark:benchmark-*:1.1.0-alpha02 منتشر شد. نسخه 1.1.0-alpha02 شامل این تعهدها است.
ویژگیهای جدید
آرتیفکتهای معیار کلان اضافه شد (androidx.benchmark:benchmark-macro-junit4 و androidx.benchmark:benchmark-macro)
- سنجههای عملکرد راهاندازی، پیمایش/پویانمایی را از برنامهتان، بهصورت محلی یا در CI ضبط کنید
- ضبط و بازرسی کردن ردپاها از داخل «استودیو Android»
رفع اشکالها
- رفع موقت مشکل اجازههای پوسته با دایرکتوری برونداد در Android 12 (توجه - ممکن است برای ادامه ضبط فایلهای برونداد در دستگاههای تحتتأثیر، نیاز به بهروزرسانی «افزایه Android Gradle» به نسخه 7.0.0 canary و «استودیو Android» به نسخه Arctic Fox (2020.3.1) باشد). (Icb039)
- پشتیبانی از ذخیره کردن پیکربندی در حافظه نهان در BenchmarkPlugin (6be1c1، b/159804788)
- Simplified file output - on by default, in a directory that doesn't require
requestLegacyExternalStorage=true(8b5a4d, b/172376362) - خطاهای گزارش هشدار کتابخانه چاپ درباره پیدا نکردن رشته JIT در نسخههای پلاتفرمی که در آن وجود ندارد را برطرف میکند. (I9cc63، b/161847393)
- اصلاح برای خواندن حداکثر فرکانس دستگاه. (I55c7a)
نسخه 1.1.0-alpha01
۱۰ ژوئن ۲۰۲۰ (۲۱ خرداد ۱۳۹۹)
androidx.benchmark:benchmark-common:1.1.0-alpha01، androidx.benchmark:benchmark-gradle-plugin:1.1.0-alpha01، و androidx.benchmark:benchmark-junit4:1.1.0-alpha01 منتشر شدهاند. نسخه 1.1.0-alpha01 حاوی این commit-ها است.
ویژگیهای جدید نسخه ۱.۱
- سنجه تخصیص - اکنون معیارها پساز مرحله گرم کردن و زمانبندی، مرحله دیگری را اجرا میکنند که تعداد تخصیص را ثبت میکند. تخصیصها میتوانند در نسخههای قدیمیتر پلاتفرم باعث بروز مشکل در عملکرد شوند (در O، ۱۴۰ نانوثانیه به ۸ نانوثانیه در M تبدیل شد - اندازهگیریشده در Nexus5X، با ساعتهای قفلشده). این سنجه در برونداد کنسول «استودیو Android» و همچنین در
- پشتیبانی از نمایهسازی - اکنون میتوانید دادههای نمایهسازی را برای اجرای محکزنی ضبط کنید تا بررسی کنید چرا کدتان ممکن است بهکندی اجرا شود. «سنجش عملکرد» از ضبط ردیابی روش یا نمونهگیری روش از ART پشتیبانی میکند. این فایلها را میتوان بااستفاده از فایل > باز کردن با Profiler در «استودیو Android» بازرسی کرد.
- افزایه Benchmark Gradle اکنون پیشفرضهایی برای راهاندازی سادهتر ارائه میدهد:
-
testBuildTypeبهطور پیشفرض روی انتشار تنظیم شده است تا از استفاده از وابستگیها با پوشش کد داخلی جلوگیری شود. buildType انتشار نیز بهعنوان buildType پیشفرض پیکربندی شده است که به Android Studio امکان میدهد هنگام باز کردن پروژه برای اولینبار، گونه ساخت صحیح را بهطور خودکار انتخاب کند. (b/138808399) -
signingConfig.debugبهعنوان پیکربندی امضای پیشفرض استفاده میشود (b/153583269)
-
** رفع اشکالها **
- سربار انتقال گرمکردن بهطور قابلتوجهی کاهش یافته است، جایی که اولین اندازهگیری برای هر محک بهطور مصنوعی بالاتر از سایرین بود. این مشکل در محکهای بسیار کوچک (۱ میکروثانیه یا کمتر) بیشتر مشهود بود. (b/142058671)
- خطای
InstrumentationResultParserچاپشده برای هر محک هنگام اجرا از خط فرمان برطرف شد. (I64988، b/154248456)
مشکلات شناختهشده
- خط فرمان، فراخوانیهای Gradle از «محک» نتایج را مستقیماً چاپ نمیکند. میتوانید با اجرای آن ازطریق «استودیو» یا تجزیه فایل برونداد JSON برای نتایج، این مشکل را دور بزنید.
- گزارشدهی محکزنی نمیتواند گزارش را از دستگاههایی که برنامهای با applicationId منتهی به «android» یا «download» (بدون حساسیت به حروف بزرگ و کوچک) در آنها نصب شده است دریافت کند. کاربرانی که با این مشکل مواجه میشوند باید «افزایه Android Gradle» را به نسخه 4.2-alpha01 یا بالاتر ارتقا دهند.
نسخه ۱.۰.۰
نسخه محک ۱.۰.۰
۲۰ نوامبر ۲۰۱۹
androidx.benchmark:benchmark-common:1.0.0، androidx.benchmark:benchmark-gradle-plugin:1.0.0، و androidx.benchmark:benchmark-junit4:1.0.0 بدون هیچ تغییری نسبتبه نسخه 1.0.0-rc01 منتشر شدهاند. نسخه ۱.۰.۰ حاوی این ثبتها است.
ویژگیهای اصلی نسخه ۱.۰.۰
کتابخانه Benchmark به شما امکان میدهد محکهای عملکرد کد برنامه را بنویسید و نتایج را بهسرعت دریافت کنید.
این ویژگی از مشکلات پیکربندی ساخت و زمان اجرا جلوگیری میکند و عملکرد دستگاه را تثبیت میکند تا اطمینان حاصل شود که اندازهگیریها دقیق و یکنواخت هستند. معیارها را مستقیماً در Android Studio یا در «ادغام پیوسته» اجرا کنید تا عملکرد کد را درطول زمان مشاهده کنید و از پسرفت جلوگیری کنید.
ویژگیهای اصلی عبارتاند از:
- تثبیت ساعت
- اولویتبندی خودکار رشتهها
- پشتیبانی از آزمایش عملکرد واسط کاربر، مثلاً در RecyclerView Sample
- آمادهسازی و حلقهسازی با آگاهی از JIT
- برونداد معیار JSON برای پسپردازش
نسخه 1.0.0-rc01
۲۳ اکتبر ۲۰۱۹
androidx.benchmark:benchmark-common:1.0.0-rc01، androidx.benchmark:benchmark-gradle-plugin:1.0.0-rc01، و androidx.benchmark:benchmark-junit4:1.0.0-rc01 منتشر شدهاند. نسخه 1.0.0-rc01 شامل این commitها است.
ویژگیهای جدید
- ردیابی systrace به محکها اضافه شد
رفع اشکالها
- مشکل ناپایداری سنجه که در آن JIT بهدلیل اولویتزدایی قبلاز گرم شدن تمام نمیشد برطرف شد (b/140773023)
- دایرکتوری خروجی JSON یکپارچه در سراسر افزایه Android Gradle نسخه ۳.۵ و ۳.۶
نسخه 1.0.0-beta01
۹ اکتبر ۲۰۱۹
androidx.benchmark:benchmark-common:1.0.0-beta01، androidx.benchmark:benchmark-gradle-plugin:1.0.0-beta01، و androidx.benchmark:benchmark-junit4:1.0.0-beta01 منتشر شدهاند. نسخه 1.0.0-beta01 شامل این commit-ها است.
ویژگیهای جدید
- اجرای جمعآوری زباله قبلاز هر گرمسازی برای کاهش فشار حافظه از یک محک به محک بعدی (b/140895105)
رفع اشکالها
-
androidx.annotation:android-experimental-lintوابستگی اضافه شد تا کد Java وقتی از API آزمایشی استفاده نمیشود، خطاهای lint را بهدرستی تولید کند، مشابه آنچه که با شرح آزمایشی Kotlin برای فراخوانندگان Kotlin ارائه میشود. - اکنون استفاده از آرگومان ابزار دقیق
additionalTestOutputDirبرای برونداد در «افزایه Android Gradle» نسخه ۳.۶ را بهدرستی تشخیص میدهد تا بداند «افزایه Android Gradle» چه زمانی کپی دادهها را مدیریت میکند. - فرکانس ساعت شناسایینشده را در JSON اصلاح کنید تا
-1بهدرستی چاپ شود (b/141945670).
نسخه 1.0.0-alpha06
۱۸ سپتامبر ۲۰۱۹
androidx.benchmark:benchmark-common:1.0.0-alpha06، androidx.benchmark:benchmark-gradle-plugin:1.0.0-alpha06، و androidx.benchmark:benchmark-junit4:1.0.0-alpha06 منتشر شدهاند. نسخه 1.0.0-alpha06 حاوی این تعهدات است.
ویژگیهای جدید
- بررسیای برای استفاده نادرست از بسته قدیمی برای اجراکننده آزمایش اضافه شد که اکنون پیام خطای مفیدتری ارائه میدهد
تغییرات میانای برنامهسازی کاربردی
- برچسب آزمایشی
ExperimentalAnnotationReportاکنون بهدرستی عمومی است. استفاده از میانای برنامهسازی کاربردی آزمایشی BenchmarkState#report اکنون به این حاشیهنویسی نیاز دارد
نسخه 1.0.0-alpha05
۵ سپتامبر ۲۰۱۹
androidx.benchmark:benchmark-common:1.0.0-alpha05، androidx.benchmark:benchmark-gradle-plugin:1.0.0-alpha05، و androidx.benchmark:benchmark-junit4:1.0.0-alpha05 منتشر شدند. ثبتهای موجود در این نسخه را میتوانید در اینجا ببینید.
تغییرات میانای برنامهسازی کاربردی
-
BenchmarkState.reportDataAPI اکنون بهعنوان آزمایشی علامتگذاری شده است
رفع اشکالها
- اصلاح اسکریپت قفل ساعت که در دستگاههایی که فاقد ابزارهای پوسته
cutیاexprبودند، با شکست مواجه میشد. - مشکل مربوط به تکلیف
./gradlew lockClocksکه در دستگاههای روتشده با نسخه قدیمیتر ابزار su (که از پرچم-cپشتیبانی نمیکرد) متوقف میشد برطرف شد.
نسخه 1.0.0-alpha04
۷ اوت ۲۰۱۹
androidx.benchmark:benchmark-common:1.0.0-alpha04، androidx.benchmark:benchmark-gradle-plugin:1.0.0-alpha04، و androidx.benchmark:benchmark-junit4:1.0.0-alpha04 منتشر شدهاند. تغییرات گنجاندهشده در این نسخه را میتوانید در اینجا ببینید.
اسناد جدیدی نیز برای نحوه استفاده از کتابخانه Benchmark بدون Gradle اضافه شده است، هم برای استفاده با سیستمهای ساخت مختلف (مانند Bazel یا Buck) و هم هنگام اجرا در CI. برای اطلاعات بیشتر، به ساختن محکها بدون Gradle و اجرا کردن محکها در «ادغام پیوسته» مراجعه کنید.
ویژگیهای جدید
- افزایه Gradle
- اکنون بهطور خودکار پوشش آزمایشی را غیرفعال میکند و
AndroidBenchmarkRunnerرا بهطور پیشفرض تنظیم میکند (b/138374050) - هنگام اجرای محکها و هنگام استفاده از AGP نسخه ۳.۶ و بالاتر، از کپی داده مبتنی بر AGP جدید پشتیبانی میشود
- اکنون بهطور خودکار پوشش آزمایشی را غیرفعال میکند و
- افزودههای قالب JSON
- Output total benchmark test run time (b/133147694)
@Parameterizedمحکهایی که از رشته نام استفاده میکنند (برای مثال@Parameters(name = "size={0},depth={1}")) اکنون نامها و مقادیر پارامتر را برای هر محک در خروجی JSON نشان میدهند (b/132578772)
- حالت اجرای آزمایشی (b/138785848)
- حالت «اجرای آزمایشی» اضافه شد که در آن هر حلقه محک فقط یکبار اجرا میشود تا خطاها/خرابیها بدون ضبط اندازهگیریها بررسی شود. این کار میتواند مفید باشد، مثلاً برای اجرای سریع محکها در پیشارسال برای بررسی اینکه خراب نشده باشند.
تغییرات میانای برنامهسازی کاربردی
- ساختار واحد تغییر کرده است، تقسیم کتابخانه (b/138451391)
benchmark:benchmark-junit4حاوی کلاسهایی با وابستگی JUnit است:AndroidBenchmarkRunnerوBenchmarkRuleکه هر دو به بستهandroidx.benchmark.junit4منتقل شدهاند-
benchmark:benchmark-commonحاوی بقیه منطق، ازجمله BenchmarkState API است - این تقسیم به کتابخانه امکان میدهد در آینده بدون استفاده از APIهای JUnit4 از سنجش عملکرد پشتیبانی کند
- اکنون هشدارهای پیکربندی بهعنوان خطا درنظر گرفته میشوند و باعث ازکارافتادن آزمایش میشوند (b/137653596)
- این کار برای تشویق بیشتر به اندازهگیری دقیق، بهویژه در CI، انجام میشود
- این خطاها را میتوان با آرگومان ابزار دقیق به هشدار کاهش داد. برای مثال:
-e androidx.benchmark.suppressErrors "DEBUGGABLE,LOW_BATTERY"
رفع اشکالها
- خطاها هنگام نوشتن در فضای ذخیرهسازی خارجی در دستگاههای Q پیامهای توصیفی بیشتری ارائه میدهند، با پیشنهادهایی درباره نحوه حل مشکل
- بهجای اینکه هنگام خاموش بودن صفحهنمایش، اجراهای محک با خطا مواجه شوند، صفحهنمایش درطول اجراهای محک بهطور خودکار روشن میشود
همیاریهای خارجی
- از سرگئی زاخاروف برای مشارکت در بهبود خروجی JSON و رفع مشکلات خاموش شدن صفحهنمایش سپاسگزاریم!
نسخه 1.0.0-alpha03
۲ ژوئیه ۲۰۱۹
androidx.benchmark:benchmark:1.0.0-alpha03 و androidx.benchmark:benchmark-gradle-plugin:1.0.0-alpha03 منتشر شدهاند. ثبتهای موجود در این نسخه را میتوانید در اینجا ببینید.
ویژگیهای جدید
- نمایش مدتزمان خواب بهدلیل کاهش سرعت حرارتی در هر محک در گزارش کامل JSON
رفع اشکالها
- افزایه Gradle دیگر نباید پساز افزایههای Android و بلوک Android اعمال شود
- پشتیبانی از گزارشهای محک را در دستگاههای Android 10 بااستفاده از فضای ذخیرهسازی محدودشده اضافه میکند
نسخه 1.0.0-alpha02
۶ ژوئن ۲۰۱۹
androidx.benchmark:1.0.0-alpha02 و
androidx.benchmark:benchmark-gradle-plugin:1.0.0-alpha02 منتشر شدند. ثبتهای
موجود در این نسخه را میتوانید در اینجا ببینید.
توجه داشته باشید که ما با طرحواره JSON بهعنوان یک میانای برنامهسازی کاربردی رفتار میکنیم. قصد داریم از همان محدودیتهای پایداری سایر APIها پیروی کنیم: پایدار (با استثناهای بسیار نادر) یکبار در نسخه بتا، و ثابت در نسخه نهایی، با افزودن فقط در نسخههای جزئی و تغییرات/حذف در نسخههای اصلی.
تغییرات میانای برنامهسازی کاربردی
طرحواره JSON بازسازی شد. تغییرات بیشتر در طرح JSON احتمالاً به موارد افزودنی محدود میشود:
- ساختار شیء نتیجه را برای پشتیبانی از گروههای معیار اضافی در آینده بازسازماندهی کردیم (b/132713021)
- اطلاعات بافت اجرای آزمایشی، مثل اطلاعات دستگاه و ساخت و اینکه آیا ساعتها قفل هستند یا نه، به شیء سطح بالا اضافه شد (b/132711920)
- نامهای سنجه زمان اکنون در نامشان «ns» دارند (b/132714527)
- آمار اضافی به هر سنجه گزارششده اضافه شد (حداکثر، میانه، حداقل)، و آمار خلاصه سادهشده «نانو» برداشته شد (b/132713851)
Removed XML output (b/132714414)
تشخیص دریچه حرارتی از میانای برنامهسازی کاربردی
BenchmarkState.reportDataبرداشته شد (b/132887006)
رفع اشکالها
- مشکل عدم نمایش
./gradlew lockClocksدر برخیاز دستگاههای دارای سیستمعامل جدید برطرف شد (b/133424037) - تشخیص محدودسازی برای شبیهساز غیرفعال شد (b/132880807)
نسخه 1.0.0-alpha01
۷ مه ۲۰۱۹
androidx.benchmark:benchmark:1.0.0-alpha01 منتشر شد. ثبتهای موجود در این نسخه
در اینجا دردسترس است.