معیار
| آخرین به روز رسانی | انتشار پایدار | کاندید را آزاد کنید | نسخه بتا | انتشار آلفا |
|---|---|---|---|---|
| 10 سپتامبر 2025 | 1.4.1 | - | - | - |
اعلام وابستگی ها
برای افزودن وابستگی به بنچمارک، باید مخزن Google Maven را به پروژه خود اضافه کنید. برای اطلاعات بیشتر، مخزن Maven Google را بخوانید.
ماکرو بنچمارک
برای استفاده از Macrobenchmark در پروژه خود، وابستگی های زیر را به فایل build.gradle خود برای ماژول macrobenchmark خود اضافه کنید:
شیار
dependencies { androidTestImplementation "androidx.benchmark:benchmark-macro-junit4:1.4.1" }
کاتلین
dependencies { androidTestImplementation("androidx.benchmark:benchmark-macro-junit4:1.4.1") }
میکرو بنچمارک
برای استفاده از Microbenchmark در پروژه خود، وابستگی های زیر را برای ماژول microbenchmark خود به فایل build.gradle خود اضافه کنید:
شیار
dependencies { androidTestImplementation "androidx.benchmark:benchmark-junit4:1.4.1" } android { ... defaultConfig { ... testInstrumentationRunner "androidx.benchmark.junit4.AndroidBenchmarkRunner" } }
کاتلین
dependencies { androidTestImplementation("androidx.benchmark:benchmark-junit4:1.4.1") } android { ... defaultConfig { ... testInstrumentationRunner = "androidx.benchmark.junit4.AndroidBenchmarkRunner" } }
کتابخانه Microbenchmark همچنین یک پلاگین Gradle را برای استفاده با ماژول microbenchmark ارائه می دهد. این افزونه پیشفرضهای پیکربندی ساخت را برای ماژول تنظیم میکند، نسخه خروجی معیار را برای میزبان تنظیم میکند و وظیفه ./gradlew lockClocks را ارائه میکند.
برای استفاده از این افزونه، خط زیر را در بلوک «plugins» در فایل build.gradle سطح بالای خود قرار دهید:
شیار
plugins { id 'androidx.benchmark' version '1.4.1' apply false }
کاتلین
plugins { id("androidx.benchmark") version "1.4.1" apply false }
سپس افزونه را در فایل build.gradle ماژول بنچمارک خود اعمال کنید
شیار
plugins { id 'androidx.benchmark' }
کاتلین
plugins { id("androidx.benchmark") }
بازخورد
بازخورد شما به بهتر شدن Jetpack کمک می کند. اگر مسائل جدیدی کشف کردید یا ایده هایی برای بهبود این کتابخانه دارید، به ما اطلاع دهید. لطفاً قبل از ایجاد کتابخانه جدید، به مسائل موجود در این کتابخانه نگاهی بیندازید. با کلیک کردن روی دکمه ستاره می توانید رای خود را به یک موضوع موجود اضافه کنید.
برای اطلاعات بیشتر به مستندات ردیاب مشکل مراجعه کنید.
نسخه 1.4
نسخه 1.4.1
10 سپتامبر 2025
androidx.benchmark:benchmark-*:1.4.1 منتشر شد. نسخه 1.4.1 شامل این commit ها است.
رفع اشکال
-
perfettoSdkTracing=trueثابت (مثلاً هنگام ردیابی Compose در microbenchmark) اگر فرآیند هدف قبلاً در حال اجرا بود و یک StartupMode مشخص نشده بود، از بین میرفت. ( Ib2c1f )
نسخه 1.4.0
30 جولای 2025
androidx.benchmark:benchmark-*:1.4.0 منتشر شد. نسخه 1.4.0 حاوی این تعهدات است.
تغییرات مهم از 1.3.0
میکرو بنچمارک
- Gradle به جای اینکه در بالاترین سطح برای احترام به جداسازی پروژه Gradle باشد، ساعتها
lockClocksوunlockClocksتا در پروژههای معیار قرار گیرند. - Refactored
BenchmarkRuleکه در بالای کوروتین ها ساخته می شود و از رفتارyield()بهتر پشتیبانی می کند. این باید به طور قابل توجهی خطر ANR ها را در طول اجرای معیار، به ویژه اجرای طولانی CI کاهش دهد. توجه: بنچمارکهای UI باید باmeasureRepeatedOnMainThreadاجرا شوند
ماکرو بنچمارک
- راهحل اضافه شده در API 34+ برای
CompilationMode.None()عملکرد متناقضی خواهد داشت زیرا ART اکنون برنامهها را پس از اولین راهاندازی تا حدی کامپایل میکند. - ویژگی آزمایشی - Startup Insights میتواند برخی از مسائل رایج در یک Macrobenchmark راهاندازی را با عبور از
MacrobenchmarkRule(..., experimentalConfig = ExperimentalConfig(StartupInsightsConfig(isEnabled = true)))برجسته کند. - ArtMetric اضافه شده است که می تواند برای شناسایی JIT Compilation و بارگیری کلاس بهینه نشده استفاده شود - هر دو برای اعتبارسنجی بهینه سازی های Baseline Profile مفید هستند.
پروفایل های پایه
- اکنون
BaselineProfileRuleنمایههایی را برای برنامههای چند فرآیندی جمعآوری میکند.
سایر تغییرات
- TraceProcessor به کتابخانه خودش (
androidx.benchmark:benchmark-traceprocessor) کشیده شده است تا بتوان از آن خارج از معیارهایMacrobenchmarkدر موارد دیگر استفاده کرد. همچنین میتوان آن را با تعریف ServerLifecycleManager خود روی Desktop JVM اجرا کرد.
نسخه 1.4.0-rc01
18 ژوئن 2025
androidx.benchmark:benchmark-*:1.4.0-rc01 منتشر شد. نسخه 1.4.0-RC01 شامل این تعهدات است.
رفع اشکال
- راهحلی برای تصاویر زمان اجرا اضافه شد که باعث میشود
CompilationMode.None()عملکرد بدترین حالت را پس از اولین تکرار اندازهگیری نکند. متأسفانه این راهحل به تأخیر 5 ثانیهای نیاز دارد تا عمداً تصویر زمان اجرا در ابتدای هر مجموعه ماکرو بنچمارک خراب شود ( I4a4f1 ).
نسخه 1.4.0-beta02
4 ژوئن 2025
androidx.benchmark:benchmark-*:1.4.0-beta02 منتشر شد. نسخه 1.4.0-beta02 حاوی این تعهدات است.
تغییرات API
- یک
BaselineProfileConfig.Builderاضافه کرد تا فراخوانیBaselineProfileRule.collectWithResults()را برای توسعه دهندگان جاوا آسانتر کند. ( I94905 )
نسخه 1.4.0-beta01
7 مه 2025
androidx.benchmark:benchmark-*:1.4.0-beta01 منتشر شد. نسخه 1.4.0-beta01 حاوی این تعهدات است.
تغییرات API
- نوع سازنده
PerfettoTraceRuleاضافه شد کهPerfettoConfig( Ie53ba ) را می پذیرد
رفع اشکال
- فرمت پیوند بینش راه اندازی
TraceProcessorبه روز شده برای استفاده از افزونه صحیح و جداسازی واضح تر (:کوتاهتر از%3Aاست و هر دو پشتیبانی می شوند) ( Ie18ef ) - همیشه از فورس استاپ برای از بین بردن فرآیندها استفاده کنید، حتی زمانی که برنامه های سیستم روت شده و از بین می روند. رفع استثناهای فرم:
Expected no stdout/stderr from killall ... No such process. ( Idca2c )
مشارکت خارجی
- کنترل کننده استثنای پروکسی برای
TraceProcessorHttpServer( I480f5 ) اضافه شد
نسخه 1.4.0-alpha11
9 آوریل 2025
androidx.benchmark:benchmark-*:1.4.0-alpha11 منتشر شد. نسخه 1.4.0-alpha11 حاوی این commit ها است.
تغییرات API
- مهلت زمانی آرگومان
TraceProcessorتغییر کرد: مدت زمان تا زمانی که Ms برای قابلیت استفاده تماس گیرنده جاوا طولانی است. ( I9fbb5 ) - سازنده
TraceProcessorبه عنوان داخلی علامت گذاری کنید. تماس گیرندگان باید ازTraceProcessor.startServerیاTraceProcessor.runServerاستفاده کنند. ( Ia8c5b )
رفع اشکال
- هنگام از بین بردن برنامه با
MacrobenchmarkScope.killProcess، نتایج فرمان kill را اعتبارسنجی کنید تا از شکست بی صدا و خطای مهلت زمانی جلوگیری کنید. ( I84555 )
به روز رسانی های وابستگی
- این کتابخانه اکنون سطح زبان Kotlin 2.0 را هدف قرار می دهد و به KGP 2.0.0 یا جدیدتر نیاز دارد. ( Idb6b5 )
نسخه 1.4.0-alpha10
26 مارس 2025
androidx.benchmark:benchmark-*:1.4.0-alpha10 منتشر شد. نسخه 1.4.0-alpha10 حاوی این commit ها است.
تغییرات API
- مدت زمان پیشفرض برای بارگیری سرور
TraceProcessorو پرسوجو را به 120 ثانیه افزایش داد (از 60/30 قبلی)، و هر دو را با یک پارامتر زمانبندی قابل تنظیم کرد. ( Ifec87 )
رفع اشکال
- برخی از مشکلاتی را که هنگام محک زدن یا گرفتن نمایههای یک برنامه بدون
profileinstallerرخ میداد، برطرف کرد وBroadcastRecieverنیز شامل میشود. این فقط بر روی دستگاه های روت شده تأثیر می گذارد. ( Ied308 )
نسخه 1.4.0-alpha09
12 مارس 2025
androidx.benchmark:benchmark-*:1.4.0-alpha09 منتشر شد. نسخه 1.4.0-alpha09 حاوی این تعهدات است.
تغییرات API
-
TraceProcessorو Session API با دستگیره های قابل بسته برای استفاده آسان تر با چرخه عمر سفارشی اضافه شده است. این همچنین گامی در جهت فعال کردن استفاده آسانتر از Coroutine و Java API است. توابع افزودنیTraceProcessor.runServer {}اکنون آزمایشی علامتگذاری شدهاند، زیرا احتمالاً جابهجا میشوند و در آینده غیرآزمایشی میشوند. ( I358b4 )
رفع اشکال
- به دلیل تغییر در جعبه اسباببازی
pgrepکه اکنون برای چاپ خط فرمان کامل-aنیاز دارد، ضبط معیار و نمایه خط پایه ثابت با API 36 کار نمیکند. ( IDc991 ) - تنظیمات ردیابی پیشفرض را فیلتر کنید تا خطر از دست رفتن دادهها در ردیابیها در سطوح API جدیدتر کاهش یابد. ( I54e8a )
- آرگومان ابزار دقیق
androidx.benchmark.killExistingPerfettoRecordingsآزمایشی اضافه شد، که میتوان آن را رویfalseتنظیم کرد تا امکان ادامه گرفتن ردیابی perfetto از قبل وجود داشته باشد. بهطور پیشفرض، ردیابیهای پرفتو موجود روی دستگاه برای جلوگیری از تداخل، از بین میروند. ( I02a3c ) - فیلد JSON
context.osCodenameAbbreviatedاکنون برای نسخههای سیستمعامل منتشر شده در API 35 و بالاتر از آن،RELخواهد بود، زیرا نامهای کد غیر عددی دیگر توسط پلتفرم اصلی پشتیبانی نمیشوند. ( Ib17fd ) - رفع خرابی در
FrameTimingMetricهنگامی که فریمهای همگامسازی مجدد انجام میشوند. ( I7c6f4 , b/394610806 ) - دیگر تصور نکنید
Choreographer#doFrameبالای قاب پشته در رشته اصلیFrameTimingQueryاست. ( Iee0e0 , b/340206285 )
نسخه 1.4.0-alpha08
12 فوریه 2025
androidx.benchmark:benchmark-*:1.4.0-alpha08 منتشر شد. نسخه 1.4.0-alpha08 حاوی این commit ها است.
تغییرات API
- APIهای برنامه افزودنی
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 )
رفع اشکال
- کاهش تعداد توابع داخلی Microbenchmark که در حین نمایهسازی فراخوانی میشوند تا به عنوان مثال ردیابیهای روش واضحتر شوند ( Ifaed8 )
- راه حل احتمالی برای خرابی ها: 'توقف [
ProcessPid(processName=perfetto, pid=...)] ناموفق بود. اکنون وقتی یک فرآیند Perfetto پسزمینه قبل از اجرای معیار متوقف نمیشود، بنچمارک به جای خراب شدن، پیامی را ثبت میکند. ( I37d3e , b/323601788 ) -
IllegalStateExceptionsبا برچسب 'stdoutpm dump-profilesمورد انتظار' که به دلیل بررسی فرمت خروجی بسیار دقیق ایجاد شده اند، برطرف کنید. ( I358dc )
نسخه 1.4.0-alpha07
29 ژانویه 2025
androidx.benchmark:benchmark-*:1.4.0-alpha07 منتشر شد. نسخه 1.4.0-alpha07 حاوی این commit ها است.
ویژگی های جدید
-
BaselineProfileRuleاکنون یک APIcollectWithResults(...)را معرفی می کند که شامل لیستی از مسیرهای پروفایل های محاسبه شده است. ( I056f8 ) - آرگومان ابزار دقیق
androidx.benchmark.measureRepeatedOnMainThread.throwOnDeadlineاضافه شد، که می تواند روی false تنظیم شود تا رفتار مهلتmeasureRepeatedOnMainThreadبرای آزمایش محلی غیرفعال شود. در غیر این صورت توصیه نمی شود، زیرا این امر احتمال ANR را در طول آزمایشات افزایش می دهد. ( آیدبیک , b/353226476 )
تغییرات API
-
@JvmOverloadsبه سازندهMicrobenchmarkConfigاضافه شد. ( I13fd3 ) - Refactored
BenchmarkRuleکه در بالای کوروتین ها ساخته می شود و از رفتارyield()بهتر پشتیبانی می کند. این Refactor چندین API آزمایشیBenchmarkStateرا حذف کرد، اما در صورت نیاز جایگزینهایی خواهد شد. علاوه بر این،runWithMeasurementDisabledبرای شفافسازی رفتار اضافه کرد (تمام اندازهگیریها متوقف میشوند). در آینده،runWithTimingDisabledمنسوخ خواهد شد. ( I19837 , b/389149423 , b/311242861 ) -
PerfettoTraceProcessorدر یک مصنوع جدیدandroidx.benchmark:benchmark-traceprocessorبهTraceProcessorمنتقل کنید و بیشتر API آن را غیر آزمایشی کنید. هرTraceMetricسفارشی یا هر چیزی که از ردیابی میخواند باید به وارداتTraceProcessorجدید بهروزرسانی شود.TraceProcessorAPI جدید دقیقاً مانند نسخه قدیمی کار میکند، اما یک کتابخانه رابط مستقل (تا حدودی مشابه لایهandroidx.sqliteاز Room) با پیادهسازی مختص اندروید در ماکرو بنچمارک است. مصنوع جدید را می توان در JVM نیز استفاده کرد، اما در حال حاضر باید کپی خود را ازTraceProcessorباینری راه اندازی کنید و یک پورت برای اتصال به آن ارائه دهید. ( I3a767 , I62563 , b/381134564 )
رفع اشکال
- هنگامی که
MacrobenchmarkScope.startActivityAndWaitنمی تواند فرآیند هدف را راه اندازی کند (احتمالاً به دلیل خرابی در فرآیند هدف)، به جای پیام مبهم تر "عدم تایید تکمیل راه اندازی فعالیت" ( I3539b ) یک پیام خطای واضح تر ارسال کنید. - چندین خطای نحوی در نمونههای کاتلین و برجستهسازی نحو در چندین نمونه جاوا / build.gradle رفع شد. ( IB3808 )
- اسناد پارامتر
ArtMetricوCaptureInfoروشن شد. ( I96e60 )
نسخه 1.4.0-alpha06
11 دسامبر 2024
androidx.benchmark:benchmark-*:1.4.0-alpha06 منتشر شد. نسخه 1.4.0-alpha06 حاوی این commit ها است.
تغییرات API
- استفاده از
@Language("sql")درPerfettoTraceProcessor.Session.query()حذف شد، زیرا برجسته کردن/تجزیه استودیو شکسته شده است. ( Idc2fa , b/377733398 )
رفع اشکال
- این کتابخانه اکنون از حاشیهنویسیهای پوچ JSpecify استفاده میکند که نوع استفاده هستند. توسعه دهندگان Kotlin باید از آرگومان کامپایلر زیر برای اعمال استفاده صحیح استفاده کنند:
-Xjspecify-annotations=strict(این پیش فرض با نسخه 2.1.0 کامپایلر Kotlin شروع می شود). ( I46810 , b/326456246 ) -
ArtMetricرا تصحیح کرد تا بار کلاس را گزارش کند (نه init)، و اسناد بهبود یافته برای روشن کردن رفتار زمان اجرا. ( I9915c ) - در Android Multiuser، دستورات را فقط به صورت روت در دستگاه های روت شده اجرا کنید. ( I88b44 )
نسخه 1.4.0-alpha05
13 نوامبر 2024
androidx.benchmark:benchmark-*:1.4.0-alpha05 منتشر شد. نسخه 1.4.0-alpha05 حاوی این تعهدات است.
رفع اشکال
- مشکلی در API 34+ برطرف شد که در آن
CompilationMode.None()عملکرد متناقضی داشت که نشان دهنده عملکرد اولیه و بدترین حالت نیست. این کار حول یک تغییر پلتفرم عمل می کند که به وضعیت کامپایل ART اجازه می دهد تا کمی پس از اولین راه اندازی برنامه ها را تا حدیverifyکند (فقط بر بارگذاری کلاس تأثیر می گذارد). ( 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
30 اکتبر 2024
androidx.benchmark:benchmark-*:1.4.0-alpha04 منتشر شد. نسخه 1.4.0-alpha04 حاوی این commit ها است.
ویژگی های جدید
- (تجربی) تولید نمایه پایه و محک زدن را روی برنامههای نصب شده روی یک کاربر ثانویه فعال کنید، برای مثال هر برنامهای در دستگاههای 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 ) - در معیارهای
CpuEventCounter، اگر اندازهگیریهای نامعتبر مشاهده شد، پرتاب کنید (مثلاً دستورالعملها/cpucycles==0) ( I8c503 )
نسخه 1.4.0-alpha03
16 اکتبر 2024
androidx.benchmark:benchmark-*:1.4.0-alpha03 منتشر شد. نسخه 1.4.0-alpha03 حاوی این commit ها است.
تغییرات API
- Macrobenchmark :
ArtMetricرا اضافه میکند، که میتواند برای بررسی پوشش نمایه یا عملکرد کلی Android RunTime استفاده شود. تعداد و کل مدت JIT، کلاس اولیه (در صورت وجود) و تأیید کلاس را ضبط می کند. علاوه بر این،CaptureInfoتغییر میدهد تا نسخه اصلی ART اختیاری با پیشفرض را شامل شود. ( I930f7 ) -
coefficientOfVariationبه خروجی بنچمارک JSON اضافه کنید تا ثبات را در یک اجرای معیار مشخص نشان دهید. ( Ib14ea )
رفع اشکال
- هنگامی که دستگاه AVD دارای فضای خالی باشد،
CollectBaselineProfileTaskرفع کرد. ( 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 استفاده میکند که نوع استفاده هستند. توسعه دهندگان Kotlin باید از آرگومان کامپایلر زیر برای اعمال استفاده صحیح استفاده کنند:
-Xjspecify-annotations=strict(این پیش فرض با نسخه 2.1.0 کامپایلر Kotlin شروع می شود). ( I7104f , b/326456246 )
نسخه 1.4.0-alpha02
2 اکتبر 2024
androidx.benchmark:benchmark-*:1.4.0-alpha02 منتشر شد. نسخه 1.4.0-alpha02 حاوی این تعهدات است.
تغییرات API
- Gradle به جای در دسترس بودن در سطح بالا، ساعتها
lockClocksوunlockClocksتا در پروژههای معیار قرار بگیرند. این تغییر ضروری بود زیرا متأسفانه هیچ راهی برای ثبت این اقدامات به عنوان اقدامات سطح بالا بدون شکستن انزوای پروژه وجود ندارد. ( I02b8f , b/363325823 )
رفع اشکال
- اکنون
BaselineProfileRuleبا سیگنال دادن به هر فرآیند در حال اجرا در انتهای بلوک، پروفایلها را برای برنامههای چند فرآیندی جمعآوری میکند تا پروفایلها را تخلیه کند. اگر یک کامپایل مبتنی بر نمایه هرگز با موفقیت فرآیندی برای پخش پیدا نکند، کامپایل با شکست مواجه میشود، زیرا غیرمنتظره است که دادههای نمایه در آن وجود داشته باشد. علاوه بر این، یک آرگومان ابزار دقیق برای کنترل مدت زمان انتظار dump اضافه کرد:androidx.benchmark.saveProfileWaitMillis( I0f519 ، b/366231469 ) - از معیار
1.3.2: آزمایشگاه آزمایشی Firebase ثابت (FTL) که قادر به کشیدن فایلهای نمایه خط پایه یا نتایج Macrobenchmark از پلاگین Baseline Profile Gradle نیست. ( I2f678 , b/285187547 )
برای استفاده از FTL، افزونه را به ماژول نمایه پایه در بلوک افزونه اعمال کنید، با:
plugins {
...
id("com.google.firebase.testlab")
}
و سپس آزمایشگاه تست Firebase را با استفاده از:
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
18 سپتامبر 2024
androidx.benchmark:benchmark-*:1.4.0-alpha01 منتشر شد. نسخه 1.4.0-alpha01 حاوی این تعهدات است.
ویژگی جدید - Insights Startup App
- نسخه اولیه بینش راه اندازی برنامه را می توان در 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 اکنون در Traces Perfetto به عنوان شمارنده نمایش داده می شوند. ( 3214854 )
- اسکریپتهای آزمایشی را برای غیرفعال کردن jit (نیاز به راهاندازی مجدد ریشه / زمان اجرا) و بازنشانی وضعیت عملکرد/تست دستگاه اضافه کنید. اینها در حال حاضر به عنوان تکالیف gradle منتشر نمی شوند. ( 7c3732b )
- آرگومان معیار برای رد شدن از تست ها هنگام اجرا در شبیه ساز اضافه شد. وقتی
automaticGenerationDuringbuild فعال باشد، بنچمارک ها نیز باعث ایجاد نمایه پایه می شوند. اگر از شبیه سازها استفاده شود، این کار با شکست مواجه خواهد شد. با آرگومان جدیدskipBenchmarksOnEmulatorمیتوانیم به جای آن از آزمایش صرف نظر کنیم. ( 0c2ddcd ) - تغییر رویداد perf فعال کردن منطق برای اجرا در API 23+ ( 2550048 )
تغییرات API
- آرگومان آزمایشی
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استفاده کنید، زمانی که مکث/رزومه اتفاق میافتد، دیگر زمانها بهطور قابل توجهی کاهش نمییابد. ( 5de0968 )
نسخه 1.3
نسخه 1.3.4
26 مارس 2025
androidx.benchmark:benchmark-*:1.3.4 منتشر شد. نسخه 1.3.4 شامل این commit ها است.
رفع اشکال
- رفع ناسازگاریهای جداسازی پروژه Gradle در پلاگین Gradle Baseline Benchmark. ( b/404523257 )
نسخه 1.3.3
16 اکتبر 2024
androidx.benchmark:benchmark-*:1.3.3 منتشر شد. نسخه 1.3.3 حاوی این commit ها است.
رفع اشکال
- هنگامی که دستگاه AVD دارای فضاهای خالی باشد،
CollectBaselineProfileTaskرفع کرد ( Ia0225 , b/371642809 )
نسخه 1.3.2
2 اکتبر 2024
androidx.benchmark:benchmark-*:1.3.2 منتشر شد. نسخه 1.3.2 شامل این commit ها است.
رفع اشکال
- ثابت شده است که آزمایشگاه تست Firebase (FTL) قادر به بیرون آوردن فایلهای نمایه خط پایه یا نتایج ماکرو بنچمارک از پلاگین Gradle Profile Baseline نیست. ( I2f678 , b/285187547 )
برای استفاده از FTL، افزونه را به ماژول نمایه پایه در بلوک افزونه اعمال کنید، با:
plugins {
...
id("com.google.firebase.testlab")
}
و سپس آزمایشگاه تست Firebase را با استفاده از:
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.3.1
18 سپتامبر 2024
androidx.benchmark:benchmark-*:1.3.1 منتشر شد. نسخه 1.3.1 حاوی این commit ها است.
رفع اشکال
- ویژگی gradle اضافه شد
androidx.baselineprofile.suppressWarningsبرای سرکوب همه هشدارهای نمایه پایه ( I7c36e , b/349646646 ) - پلاگین Gradle Profile Baseline را برای استفاده از
nonMinified…از قبل موجود وbenchmark…در صورت ایجاد توسط برنامه به جای ایجاد بستهبندی، رفع کرد. ( Ia8934 , b/361370179 ) -
java.lang.AssertionError: ERRORS (not suppressed): EMULATORزمانی کهautomaticGenerationDuringBuildدر شبیه سازها فعال است. از آرگومان جدید برای رد شدن از آزمون استفاده می شود. ( If3f51 , b/355515798 ) - کوچکسازی Microbenchmark - زیرکلاسهای
org.junit.runner.notification.RunListenerرا در کتابخانه محک نگه دارید ( Ic8ed5 , b/354264743 ) -
TraceSectionMetricبرای نادیده گرفتن برش های غیر پایانی رفع کنید. قبلاً اینها مدت زمان -1 در نظر گرفته می شدند، به عنوان مثال در حین جمع بندی یا یافتن حداقل مدت زمان. ( If74b7 ) - مشکلی در
FrameTimingGfxInfoMetricبرطرف شد که در آن شروع متریک در صورتی که فرآیند از قبل اجرا نشده بود از کار بیفتد. ( I6e412 )
نسخه 1.3.0
21 آگوست 2024
androidx.benchmark:benchmark-*:1.3.0 منتشر شد. نسخه 1.3.0 شامل این commit ها است.
Microbenchmark از 1.2.0 تغییر کرده است
- ردیابی روش بهطور پیشفرض در microbenchmarkها هنگام اجرا در اکثر دستگاهها روشن است
- ردیابی روش به عنوان یک فاز جداگانه، پس از اندازهگیریها اجرا میشود - این امکان اندازهگیری دقیق و ردیابی روش را فراهم میکند تا هر دو از یک اجرای معیار منفرد خروجی شوند.
- ردیابی روش در برخی از نسخههای سیستمعامل Android و ART بر مراحل اندازهگیری بعدی تأثیر میگذارد - در این نسخهها، ردیابی روش بهطور پیشفرض خاموش است و یک هشدار در خروجی Studio چاپ میشود.
- معیارهای رشته اصلی و ANR
- به منظور جلوگیری از ANR هنگام اجرا برای چند ثانیه،
measureRepeatedOnMainThreadبرای معیارهای رشته رابط کاربری (مثلاً آنهایی که با رابطهای کاربری Compose/View تعامل میکنند) اضافه شده است. - اگر انتظار می رود مهلت اجتناب از ANR فراتر رود، ردیابی روش نادیده گرفته می شود. برای غیرفعال کردن این رفتار،
androidx.benchmark.profiling.skipWhenDurationRisksAnrرا روی false تنظیم کنید (برای اجرای CI توصیه نمی شود، زیرا ANR می تواند در اجرای طولانی CI مشکل ایجاد کند).
- به منظور جلوگیری از ANR هنگام اجرا برای چند ثانیه،
- کوچک سازی
- قوانین محافظ تعبیه شده برای بهبود معیارهای میکرو با فعال کردن کوچکسازی
- Minification/R8 در یک ماژول کتابخانه به AGP 8.3 نیاز دارد و می تواند از طریق
android.buildTypes.release.androidTest.enableMinificationدرbuild.gradleشما فعال شود. - API آزمایشی
BlackHole.consume()برای جلوگیری از حذف کد مرده اضافه شد ( If6812 ، b/286091643 )
- معیارها
- ویژگی شمارنده رویداد تجربی cpu (معیارها از
perf_event_open، که در اکثر نسخههای پلتفرم نیاز به روت دارد)، دسترسی از طریقInstrumentationArgumentandroidx.benchmark.cpuEventCounter.enable(میتواند رویtrueتنظیم شود)، وandroidx.benchmark.cpuEventCounter.events(Instructions,CpuCycles. این باید در برخی از شبیه سازهای خطای کاربر پشتیبانی شود، اما پشتیبانی در همه شبیه سازهای موجود آزمایش نشده است.
- ویژگی شمارنده رویداد تجربی cpu (معیارها از
MACRObenchmark از 1.2.0 تغییر کرده است
- بازنگری کلی روش ردیابی برای معیارهای کلان.
- اکنون ردیابیهای متد به مدت زمان
measureBlockمیشوند و اگر فرآیند چندین بار شروع شود، میتوانند چندین جلسه را ضبط کنند. - قبلاً، روش ردیابی فقط برای معیارهای
StartupMode.COLDکار می کرد و هیچ چیزی را برایmeasureBlocksکه فرآیند هدف را مجدداً راه اندازی نمی کردند، نمی گرفت. - ردیابی روش ثابت در ماکرو بنچمارک همسطح است، بنابراین ردیابی روش باید کاملاً ثبت و معتبر باشد، حتی در دستگاههای کندتر. ( I6349a , b/329904950 )
- اکنون ردیابیهای متد به مدت زمان
- هنگام از بین رفتن فرآیند، نمایه ART را در طول تکرارهای
warmUpفردی به درستی تخلیه کنید تا اندازه گیریCompilationMode.Partial(warmup=N)دقیق تر باشد. ( I17923 ) - پیام خرابی پخش Drop Shader
- پیشنهادات اشکال زدایی برای حذف پیام خرابی پخش سایه زن اضافه شد
- هنگام محک زدن برنامهها بدون
ProfileInstaller1.3، دو آرگومان ابزار دقیق برای نادیده گرفتن رفتار حذف سایهزن به خرابیهای راهحل اضافه کنید:-
androidx.benchmark.dropShaders.enable=true/false: میتوان برای رد کردن تمام سایهبانها (از جمله مواردی که در راهاندازیStartupMode.Coldانجام میشود) استفاده کرد، بهویژه هنگام محک زدن برنامههایی که هنوز از profileinstaller 1.3 استفاده نمیکنند. -
androidx.benchmark.dropShaders.throwOnFailure=true/false: می تواند برای تحمل شکست در هنگام حذف سایه بان ها، به عنوان مثال هنگام محک زدن برنامه های بدون profileinstaller 1.3 ( I4f573 ) استفاده شود.
-
- نسخه آزمایشی
MacrobenchmarkRule#measureRepeatedاضافه شد که یکPerfettoConfigسفارشی برای ضبط ردیابی Perfetto کاملا سفارشی می گیرد. توجه داشته باشید که پیکربندیهای نادرست ممکن است باعث خرابی کلاسهای متریک داخلی شوند. ( Idfd3d , b/309841164 , b/304038384 ) - برای کاهش تداخل، قبل از اجرای Macrobenchmark، کارهای dexopt پسزمینه را لغو کنید. ( I989ed )
- Macrobenchmark اکنون 1 ثانیه منتظر می ماند تا برنامه مورد نظر نمایه ART را شستشو دهد (قبلاً 500 میلی ثانیه منتظر می ماند). ( I85a50 , b/316082056 )
- تعمیرات اساسی TraceSectionMetric
- توجه : تغییرات
TraceSectionMetricزیر میتواند بر خروجیها در استفاده از CI تأثیر بگذارد و ممکن است ناپیوستگی ایجاد کند یا تجزیه را خراب کند. - Sum اکنون پیشفرض است، زیرا بیشترین استفاده از این معیار برای رویدادهای مکرر است و ابتدا دادهها در این موارد حذف میشوند.
- با حالتهای در دسترس بیشتر، برای سفارشیسازی بیشتر تغییر کرد
- نام حالت اکنون در نام خروجی متریک (در استودیو و JSON) جاسازی شده است.
- اکنون از برش های ایجاد شده با استفاده از
Trace.{begin|end}AsyncSection.
- توجه : تغییرات
- معیارها
- Power - اضافه شده
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که نتوانست شناسه فریم را تجزیه کند، بهویژه در برخی دستگاههای OEM. ( Ia24bc , b/303823815 , b/306235276 ) - سختگیری بررسی ها در
FrameMetricsرا کاهش داد و جزئیات بیشتری را به پیام های خطا اضافه کرد. ( Iadede )
- Power - اضافه شده
ثبت نمایه پایه / پلاگین Gradle از نسخه 1.2.0 تغییر می کند
- حداکثر نسخه توصیه شده AGP به 9.0.0-alpha01 افزایش یافت.
- اطمینان حاصل کنید که وظایف
mergeArtProfileوmergeStartupProfileهمیشه منتظر تولید نمایه پایه هستند. ( I623d6 , b/343086054 ) - ایجاد یک نمایه پایه با موفقیت، خلاصهای از آنچه تغییر کرده است به دست میدهد ( I824c8 , b/269484510 )
- DSL برای غیرفعال کردن هشدارها اضافه شد ( Ic4deb , b/331237001 )
- برای اطمینان از اینکه وقتی
automaticGenerationDuringBuildغیرفعال است، معیارها از پروفایلهای پایه تولید شده استفاده میکنند ( Ic144f , b/333024280 ) رفع کنید. - اصلاح ویژگی پلاگین
BaselineProfilegradle برای فعال کردن تولید نمایه پایه و محک زدن هنگام سفارشی کردن نوع ساختnonMinifiedیا معیار. ( Ib8f05 , b/324837887 ) - رفع نمایههای پایه کتابخانه در AAR قبل از AGP 8.3.0-alpha15. ( I1d2af , b/313992099 )
- نشانی وب خروجی خط پایه و نمایه راهاندازی در پایان کار ثابت شد. ( I802e5 , b/313976958 )
سایر تغییرات قابل توجه از 1.2.0
- ضبط ردیابی
- کاهش خطای EXITCODE 2 هنگام شروع perfetto از یک خطا به هشدار ثبت شده
- ردیابی AIDL را به طور پیشفرض در معیارها فعال کنید (به API 28 نیاز دارد) ( Ia0af2 ، b/341852305 )
- ردیابی برچسب پورتر را به طور پیش فرض در معیارها فعال کنید. این برای مثال، نقاط ردیابی wakelock را می گیرد. ( Icfe44 , b/286551983 )
- افزایش زمان شروع ضبط ردیابی برای جلوگیری از خرابی هنگام شروع ردیابی در دستگاههای کندتر ( I98841 , b/329145808 )
- APIهای عمومی
PerfettoTraceProcessor.Session.queryMetricsبا انواع JSON، textproto و پروتو باینری (کد نشده) اضافه شد. اینها به شما امکان می دهند معیارهای تعبیه شده درTraceProcessorرا جستجو کنید ( I54d7f , b/304038382 ) - شروع مسدود کردن را در رکورد ردیابی Perfetto فعال کنید تا خطر گم شدن داده ها در ابتدای ردیابی کاهش یابد. فقط در API 33+ پشتیبانی می شود. ( Ie6e41 , b/310760059 )
- خروجی JSON
- اطلاعات اضافی در زمینه معیار در خروجی JSON اضافه شده است:
-
context.artMainlineVersion- نسخه عدد صحیح ماژول خط اصلی Art (در صورت وجود در دستگاه،-1در غیر این صورت) -
context.build.id- برابر با android.os.Build.ID است -
context.build.version.codename- برابر با android.os.Build.VERSION.CODENAME -
context.build.version.abbreviatedCodename- مربوط به حرف اول نام رمز پیش از انتشار (از جمله در نسخه های انتشار) ( Ie5020 )
-
- لیست
profilerOutputبه خروجی JSON اضافه شد تا ابزار آسانتر در مورد ردیابی پروفایل (مانند Perfetto، Method traces) ( I05ddd ، b/332604449 ) - هنگامی که از Android Test Orchestrator در ماژولهای بنچمارک استفاده میشود، هشدار اضافه شد، زیرا باعث میشود فایلهای JSON خروجی هر ماژول بهطور مکرر بازنویسی شوند. ( Ia1af6 , b/286899049 )
- برای جلوگیری از خرابی نامشخص در هنگام نوشتن یا پس از پردازش فایل، زمانی که نام فایلها بیش از 200 کاراکتر هستند، آن را پرتاب کنید. ( I4a5ab )
- اطلاعات اضافی در زمینه معیار در خروجی JSON اضافه شده است:
نسخه 1.3.0-rc01
7 آگوست 2024
androidx.benchmark:benchmark-*:1.3.0-rc01 منتشر شد. نسخه 1.3.0-RC01 شامل این تعهدات است.
رفع اشکال
- رفع
androidx.benchmark.cpuEventCounterتولید مقادیر خراب برای رویدادهای غیر دستورالعمل ( I7386a ، b/286306579 ) -
resumeTiming/runWithTimingDisabledرا رفع کنید تا به ترتیب اولویت های متریک احترام گذاشته شود و تأثیر مکث/رزومه متریک با اولویت کمتر بر نتایج متریک با اولویت بالاتر را به میزان قابل توجهی کاهش دهید. برای مثال، اگر از شمارندههای cpu perf از طریق آرگومان ابزار دقیقcpuEventCounter.enableاستفاده کنید، زمانی که مکث/رزومه اتفاق میافتد، دیگر زمانها بهطور قابل توجهی کاهش نمییابد. ( I39c2e , b/286306579 , b/307445225 ) - با جابجایی تبدیل نمونهبرداری پشته به خارج از رشته اصلی، شانس
measureRepeatedOnMainThreadپشته کاهش مییابد. ( I487a8 , b/342237318 ) - طرح دستی دسترسی به APIهای پلتفرم جدید حذف شد زیرا این به طور خودکار از طریق مدلسازی API هنگام استفاده از R8 با AGP 7.3 یا جدیدتر (مثلا R8 نسخه 3.3) و برای همه ساختها هنگام استفاده از AGP 8.1 یا بالاتر (به عنوان مثال D8 نسخه 8.1) اتفاق میافتد. به مشتریانی که از AGP استفاده نمیکنند، توصیه میشود به نسخه 8.1 یا بالاتر D8 بهروزرسانی کنند. برای جزئیات بیشتر به این مقاله مراجعه کنید. ( I9496c , b/345472586 )
- بررسی نسخه agp برای ارسال نام بسته به عنوان instr arg اضافه شد. قبل از AGP 8.4.0، نام بسته برنامه هدف را نمی توان از طریق آرگومان های ابزار دقیق به برنامه ابزار دقیق ارسال کرد. ( 0c72a3f )
نسخه 1.3.0-beta02
10 جولای 2024
androidx.benchmark:benchmark-*:1.3.0-beta02 منتشر شد. نسخه 1.3.0-beta02 حاوی این تعهدات است.
رفع اشکال
- هنگام شروع Perfetto برای ثبت هشدار، EXITCODE
2را به خوبی مدیریت کنید، اما ادامه دهید.
نسخه 1.3.0-beta01
12 ژوئن 2024
androidx.benchmark:benchmark-*:1.3.0-beta01 منتشر شد. نسخه 1.3.0-beta01 حاوی این تعهدات است.
تغییرات API
- نام
MethodTracing.affectsMeasurementOnThisDeviceرا بهAFFECTS_MEASUREMENT_ON_THIS_DEVICEتغییر داد. ( I1bdfa ) - Api آزمایشی
BlackHole.consume()برای جلوگیری از حذف کد مرده در میکروبنچمارک ها اضافه شد. ( If6812 , b/286091643 ) - Microbenchmark اکنون به درستی پرتاب می شود تا از تداخل ردیابی روش در اندازه گیری ها جلوگیری کند. هنگامی که ردیابی روش به اجبار روشن می شود (از طریق args ابزار دقیق یا
MicrobenchmarkConfig)، و اگر اندازه گیری بعد از ردیابی متد انجام شود، در دستگاه های خاصی رخ می دهد. دستگاههای آسیبدیده API 26-30 یا نسخههای خاصی از ماژول خط اصلی ART را اجرا میکنند که تحت تأثیر این تداخل قرار گرفتهاند و میتوانند در زمان اجرا از طریقProfilerConfig.MethodTracing.affectsMeasurementOnThisDeviceشناسایی شوند. ( Iafb92 , b/303660864 )
رفع اشکال
- نسخه bumped max agp به 9.0.0-alpha01 توصیه می شود. ( I5bbb0 )
- حالت کامپایل به زمینه معیار اضافه شد ( If5612 , b/325512900 )
- AIDL tracing را به طور پیشفرض فعال کنید (به API 28 نیاز دارد) ( Ia0af2 ، b/341852305 )
- اطلاعات اضافی در زمینه معیار در خروجی JSON اضافه شده است:
-
context.artMainlineVersion- نسخه عدد صحیح ماژول خط اصلی Art (در صورت وجود در دستگاه، -1 در غیر این صورت) -
context.build.id- برابر باandroid.os.Build.IDاست -
context.build.version.codename- برابر باandroid.os.Build.VERSION.CODENAME -
context.build.version.abbreviatedCodename- مربوط به حرف اول نام رمز پیش از انتشار (حتی در نسخه های انتشار) ( Ie5020 )
-
-
StackSamplingبرای احترام بهandroidx.benchmark.profiling.sampleDurationSecondsاصلاح می کند ( Ib1d53 ) - وابستگی macro->common را به
api()تغییر دهید، بنابراین استفاده از آن برای مثالPerfettoTraceوPerfettoConfigآسانتر است. ( Icdae3 , b/341851833 ) - اطمینان حاصل کنید که وظایف
mergeArtProfileوmergeStartupProfileهمیشه منتظر تولید نمایه پایه هستند. ( I623d6 , b/343086054 ) - هنگام تصمیم گیری در مورد فعال کردن نوع ، حالت را فعال کنید. ( i5d19e ، b/343249144 )
- افزایش زمان پیش فرض شروع برای پردازنده Perfetto Trace. ( i87e8c ، b/329145808 )
نسخه 1.3.0-alpha05
14 مه 2024
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/33658271 )
- پیشنهادات اشکال زدایی اضافی برای رها کردن پیام شکست پخش سایه بان اضافه شده است. ( i5efa6 ، b/325502725 )
نسخه 1.3.0-alpha04
1 مه 2024
androidx.benchmark:benchmark-*:1.3.0-alpha04 منتشر می شود. نسخه 1.3.0-alpha04 شامل این تعهدات است.
تغییرات API
- اضافه شده اضافه شده
MacrobenchmarkRule#measureRepeatedکه یکPerfettoConfigسفارشی را برای ضبط کاملاً سفارشی پرفراتو می گیرد. توجه داشته باشید که پیکربندی های پیکربندی شده نادرست ممکن است باعث شود که در کلاس های متریک ساخته شود. ( IDFD3D ، B/309841164 ، B/304038384 ) - تغییر نام
PowerMetric.deviceSupportsPowerEnergyبهPowerMetric.deviceSupportsHighPrecisionTrackingبرای وضوح ( i5b82f ) - اضافه شده
PowerMetric.deviceBatteryHasMinimumCharge()وPowerMetric.deviceSupportsPowerEnergy()برای فعال کردن معیارهای تغییر یا پرش بر اساس قابلیت اندازه گیری قدرت دستگاه. ( i6a591 ، b/322121218 )
رفع اشکال
- مقایسه با مشخصات اولیه قبلی ( I824C8 ، B/269484510 )
- DSL را برای غیرفعال کردن هشدارها اضافه کرد ( IC4DEB ، B/331237001 )
- هنگامی که انواع معیار غیرفعال هستند ، استثناء تغییر یافته در اطلاعات تغییر یافته است ( i8a517 ، b/332772491 )
- ضبط کردن روش برای یک ماکروبچارک را ساده تر کنید تا مدت زمان واقعی
measureBlock()باشد. پیش از این ، آن را در راه اندازی فرآیند هدف آغاز کرد و فقط از شروع سرماخوردگی پشتیبانی می کرد ( IEE85A ، B/300651094 ) - از شروع کار پردازنده Perfetto Trace خودداری کنید ( I98841 ، B/329145808 )
نسخه 1.3.0-alpha03
17 آوریل 2024
androidx.benchmark:benchmark-*:1.3.0-alpha03 منتشر می شود. نسخه 1.3.0-alpha03 شامل این تعهدات است.
ویژگی های جدید
- اضافه کردن API
PerfettoTraceProcessor.Session.queryMetricsAPI با انواع JSON ، TextProto و Proto Binary (نامشخص). اینها به شما امکان می دهند از معیارهای ساخته شده در TraceProcessor ( I54D7F ، B/304038382 ) پرس و جو کنید - برای ابزار ساده تر در مورد آثار پروفایل (به عنوان مثال Perfetto ، Thead Traces) به خروجی JSON اضافه شده
profilerOutput. ( I05DDD ، B/332604449 ) - برچسب برق اضافه شده به پیکربندی Perfetto. این به عنوان مثال ، Tracepoints Wakelock را ضبط می کند. ( ICFE44 ، B/286551983 )
-
androidx.benchmark.profiling.skipWhenDurationRisksAnrاضافه شده است ، می تواند به صورت نادرست تنظیم شود تا از ردیابی روش در هنگام مدت زمان انتظار می رود که باعث ایجاد یک ANR شود - به شدت توصیه می شود که در اجرای CI جلوگیری شود. - اضافه شده استدلال Inst تجربی
androidx.benchmark.profiling.perfCompare.enable، این را برای درست کردن زمان مقایسه بین مراحل اندازه گیری و پروفایل تنظیم کنید. در EG مفید ارزیابی سربار ردیابی روش مفید است. ( i61fb4 ، b/329146942 )
تغییرات API
- تغییر یافته
TraceSectionMetric.Modeبه کلاس مهر و موم شده برای فعال کردن گسترش آینده بدون شکستن جامع هنگام بیانیه ها ( I71F7B ) - اضافه شده
TraceSectionMetric.Mode.AverageAVERATION AND.Count، و مجدداً Arg می دهد ، بنابراین آرگومان متداول (MODE) در لیست ARG زودتر بود و نیاز به مشخص کردن نام پارامترها را کاهش می داد. ( IBF0B0 ، B/315830077 ، B/322167531 ) - Renamed
Metric.getResulttogetMeasurementsto match return type ( I42595 )
رفع اشکال
- رفع مشکل برای اطمینان از استفاده از معیارها از پروفایل های پایه تولید شده در هنگام خاموش بودن
automaticGenerationDuringBuild( IC144F ، B/333024280 ) - ویژگی افزونه Gradle
BaselineProfileرا برطرف کنید تا در هنگام شخصی سازی یک نوع ساختnonMinifiedیا معیار ، تولید مشخصات و معیار پایه را فعال کنید. ( IB8F05 ، B/324837887 ) - روشهای ثابت در ماکروبنچارک آثار می کنند ، به طوری که آثار روش باید کاملاً ضبط و معتبر باشد ، حتی در دستگاه های کندتر. ( i6349a ، b/329904950 )
- فعال کردن شروع کار در رکورد Perfetto Trace برای کاهش خطر از دست دادن داده ها در ابتدای ردیابی. فقط در API 33+ پشتیبانی می شود. ( IE6E41 ، B/310760059 )
- هنگامی که ارکستر تست اندرویدی در ماژول های معیار استفاده می شود ، هشدار اضافه کرد ، زیرا این امر باعث می شود پرونده های خروجی هر ماژول به طور مکرر رونویسی شوند. ( IA1AF6 ، B/286899049 )
- نیرو '،' (کاما) هزاران جداکننده برای سازگاری در خروجی استودیو ، نادیده گرفتن محل دستگاه ( I3E921 ، B/313496656 )
- اکنون
TraceSectionMetricاز برشهای ایجاد شده با استفاده ازTrace.{begin|end}AsyncSection. ( i91b32 ، b/300434906 ) - برچسب های log.w / استثناء به همه خرابی های تشخیص راه اندازی. این رفتار فعلی را تغییر نمی دهد (بنابراین برخی از خطاها پرتاب می شوند ، و برخی دیگر در سکوت در تشخیص راه اندازی ناکام هستند) ، فقط آن را قابل درک تر می کند. به طور کلی مواردی که
Log.w()و نتوانند معیارهای راه اندازی را گزارش دهند ، مواردی هستند که رویدادهای غیر قاب از دست می روند ، استثنائاتی در هنگام شناسایی استثناء به جز اطلاعات زمان بندی فریم (از برش های UI/RT) پرتاب می شوند. ( id240f ، b/329145809 ) - قبل از اجرای یک ماکروبچارک برای کاهش تداخل ، مشاغل Dexopt را لغو کنید. ( i989ed )
- اندازه گیری
frameCountبهFrameTimingMetricبرای کمک به کشف سناریوها که در آن اندازه گیری ها تغییر می کنند ، اضافه شده است زیرا تعداد فریم های تولید شده تغییر یافته است (انیمیشن های جدید اضافه شده ، مشکلات نامعتبر ثابت می شوند). ( i1e5aa ) - روشن کرد که
frameOverrunMsمتریک ارجح برای ردیابی در صورت وجود در اسناد است و چرا. ( i18749 ، b/329478323 )
نسخه 1.3.0-alpha02
20 مارس 2024
androidx.benchmark:benchmark-*:1.3.0-alpha02 منتشر می شود. نسخه 1.3.0-alpha02 شامل این تعهدات است.
ویژگی های جدید
پشتیبانی آزمایشی R8 در میکروبن از طریق قوانین Proguard تعبیه شده. توجه داشته باشید که این پشتیبانی آزمایشی است و برای اندازه گیری تست های ماژول کتابخانه به AGP 8.3 نیاز دارد. از موارد زیر استفاده کنید تا بتوانید Minification/Optimization R8 را در
build.gradleماژول معیار خود فعال کنید. Gradle ، که بسته به بار کار باید منجر به افزایش عملکرد قابل توجهی شود. ( i738a3 ، b/184378053 )android { buildTypes.release.androidTest.enableMinification = true }
رفع اشکال
- روش ردیابی روش را برطرف می کند تا از خروجی میکروبن در خط جداگانه قرار بگیرد. ( I0455C ، B/328308833 )
نسخه 1.3.0-alpha01
21 فوریه 2024
androidx.benchmark:benchmark-*:1.3.0-alpha01 منتشر می شود. نسخه 1.3.0-alpha01 حاوی این commit ها است.
تغییرات API
- برای جلوگیری از کلمه غیر ضروری "باید" ( IA8F00 ، B/303387299 ) به
MicrobenchmarkConfigBoolean تغییر نام داد - اضافه شده
BenchmarkRule.measureRepeatedOnMainThreadبنابراین معیارهای اصلی نخ (به عنوان مثال آنهایی که نمودارها را لمس می کنند یا UI را آهنگسازی می کنند) می توانند از ایجاد ANR ، به ویژه در سوئیت های بزرگ در CI جلوگیری کنند. ( i5c86d ) - اضافه شده
FrameTimingGfxInfoMetric، اجرای متناوب آزمایشی ازFrameTimingMetricبا اندازه گیری های مستقیم از سکو ، به جای استخراج از ردیابی پرفتو. ( i457cb ، b/322232828 ) - توانایی ریختن پروفایل هنری را در حین تکرار
warmUpفردی اضافه کنید. ( I17923 ) - چندین تغییر در API
TraceSectionMetric:- اضافه کردن
Mode.Min،Mode.Max - آرگومان برچسب را اضافه کنید تا نام بخش را به عنوان برچسب متریک نادیده بگیرید
- نام حالت اضافه شده به خروجی برای روشن شدن معنی متریک
- به طور پیش فرض تغییر کرده است ، زیرا بیشتر استفاده از این متریک برای رویدادهای مکرر است که از این تغییرات در استفاده از CI آگاه باشید ، زیرا ممکن است ناپیوستگی ایجاد کند یا تجزیه را بشکند. ( IC1E82 ، B/301892382 ، B/301955938 )
- اضافه کردن
رفع اشکال
- پیام خطای بهبود یافته در افزونه Profile Profile Gradle هنگامی که دستگاه مدیریت شده مشخص شده وجود ندارد ( IDEA2B ، B/313803289 )
- رفع پروفایل های اولیه کتابخانه در AAR قبل از AGP 8.3.0-alpha15 ( I1D2AF ، B/313992099 )
- URL اولیه پایه و راه اندازی پروفایل راه اندازی در پایان کار نسل ( 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است. -
androidx.benchmark.dropShaders.throwOnFailure=true/false: می تواند برای تحمل خرابی هنگام تلاش برای رها کردن سایه بان ها استفاده شود ، به عنوان مثال هنگامی که برنامه های معیار بدون پروفایل 1.3 ( i4f573 )
-
- ردیابی روش ردیابی روی نخ UI در صورت انتظار می رود بیش از چند ثانیه طول بکشد ، و روش پاکسازی هنگام پرتاب ردیابی می شود. ( i6e768 )
- پرتاب هنگامی که نام پرونده ها بیش از 200 بار است تا از خرابی های نامشخص هنگام نوشتن یا پرونده های پس از پردازش جلوگیری شود. ( i4a5ab )
- مسئله ای را برطرف می کند که قاب های بی پروا در ابتدا و انتهای ردیابی می توانند با هم جفت شوند ، که به طور نادرست به عنوان یک قاب بسیار طولانی گزارش می شود. ( i39353 ، b/322232828 )
- هنگام نصب مجدد بسته در API 30-33 برای پاک کردن پروفایل های هنری در ساخت کاربر ،
--skip verificationدر API 30+ استفاده کنید. این به دور زدن بازی کمک می کند تا از هشدارهایی که باعث خرابی در برخی از کلاس های دستگاه ها می شود ، محافظت کند. ( IC9E36 ) - از
am force-stopبرای کشتن برنامه ها در صورت عدم برنامه سیستم مانند سیستم UI یا پرتاب استفاده کنید. ( i5e028 ) - Macrobenchmark اکنون منتظر
1 secondبرای برنامه Target است تا نمایه هنری را شستشو دهد (قبلاً منتظر500 msبود). ( i85a50 ، b/316082056 ) - هنگام تولید فریم ، خطای
FrameTimingMetricبهبود بخشید و همیشه در هنگام عدم تجزیه متریک برای کمک به تشخیص مشکل ، به ردیابی پیوند دهید. ( i956b9 ) - سقوط ثابت در
FrameTimingMetricمتماسی در تجزیه و تحلیل شناسه فریم ، به ویژه در برخی از دستگاه های OEM. ( IA24BC ، B/303823815 ، B/306235276 ) - سخت گیری آرامش از چک در
FrameMetrics، و جزئیات بیشتری را به پیام های خطا اضافه کرد. ( iadede )
نسخه 1.2
نسخه 1.2.4
17 آوریل 2024
androidx.benchmark:benchmark-*:1.2.4 منتشر می شود. نسخه 1.2.4 شامل این تعهدات است.
رفع اشکال
- مشخصات پایه را برطرف می کند Srcset در انواع معیار تنظیم نمی شود. همچنین در کتابخانه ها باعث ایجاد وابستگی دایره ای
automaticGenerationDuringBuildشود. ( i28ab7 ، b/333024280 ) - از
am force-stopبرای کشتن برنامه ها در صورت عدم برنامه سیستم مانند سیستم UI یا پرتاب استفاده کنید. این راه حلStartupMode.COLDبرطرف می کند. معیارهای Cold در حال خراب شدن از "بسته بسته $ نباید قبل از شروع سرما اجرا شود!" به دلیل فرایند کشتن کاملاً موفق نیست. ( i5e028 )
نسخه 1.2.3
24 ژانویه 2024
androidx.benchmark:benchmark-*:1.2.3 منتشر می شود. نسخه 1.2.3 شامل این تعهدات است.
رفع اشکال
- هنگامی که نسخه AGP 8.3.0 یا بالاتر است ، استثناء حذف شده از افزونه پایه پایه پایه.
- قبل از AGP 8.3.0-alpha15 ، پروفایل های پایه کتابخانه را در AAR اصلاح کنید.
نسخه 1.2.2
1 دسامبر 2023
androidx.benchmark:benchmark-*:1.2.2 منتشر می شود. نسخه 1.2.2 شامل این تعهدات است.
پروفایل های پایه
- سیاهههای مربوط به اجرای مسیر پرونده خروجی مشخصات پایه به عنوان یک پرونده محلی URI ( AOSP/2843918 ، AOSP/2853665 ، B/313976958 )
نسخه 1.2.1
15 نوامبر 2023
androidx.benchmark:benchmark-*:1.2.1 منتشر می شود. نسخه 1.2.1 شامل این تعهدات است.
ویژگی های جدید
- پیام خطای بهبود یافته هنگامی که کاربر انواع تست را غیرفعال می کند ( B/307478189 )
- خواص اضافه شده برای پشتیبانی به عنوان ادغام اجرای آزمون ( B/309805233 ) ، ( b/309116324 )
نسخه 1.2.0
18 اکتبر 2023
androidx.benchmark:benchmark-*:1.2.0 منتشر می شود. نسخه 1.2.0 شامل این تعهدات است.
تغییرات مهم از 1.1.0
پروفایل های پایه
- افزونه جدید Profile Profile Profile به صورت خودکار ضبط و از جمله پروفایل های پایه در تست شما و ایجاد گردش کار.
-
BaselineProfileRule.collectاکنون پایدار ، یک نسخه ساده و ساده از نسخه آزمایشگاهی قبلیBaselineProfileRule.collectBaselineProfileAPI- فقط
packageNameمشخص کنید و برنامه خود را هدایت کنید
- فقط
- برای کتابخانه هایی که پروفایل های پایه ایجاد می کنند ، اکنون می توانید قوانین تولید شده یا در کد (
BaselineProfileRule.collectرا) یا حتی به سادگی در افزونه Gradle فیلتر کنید. - رفع می کند
- مجموعه مشخصات پایه ثابت در Android U+ ( ID1392 ، B/277645214 )
Macrobenchmark
- تالیف
- Macrobenchmark اکنون به طور صحیح حالت تلفیقی را برای هر کامپایل تنظیم می کند - این امر نیاز به نصب مجدد APK قبل از Android 14 دارد ، بنابراین اگر می خواهید حالت خود را ادامه دهید (مانند ورود کاربر) در آنچه اندازه گیری می شود ، به شدت توصیه می شود.
- همچنین می توانید با کنترل جداگانه برنامه ریزی برنامه ، و پرش از مجموعه با
CompilationMode.Ignore()یا استدلال ابزار دقیق ، در این زمینه کار کنید
استدلال های ابزاری
- پشتیبانی از
androidx.benchmark.dryRunMode.enableArgrentation ، (قبلاً در Microbenchmark موجود است) برای اعتبارسنجی سریعتر (به عنوان مثال هنگام ایجاد معیار ، یا در presubmit) - پشتیبانی از
androidx.benchmark.profiling.mode=StackSamplingوMethodTracing. -
androidx.benchmark.enabledRulesاضافه شده است تا پروفایل پایه اولیه فیلتر در زمان اجرا در مقابل تست های قانون ماکروبنچارک فراهم شود -
androidx.benchmark.perfettoSdkTracing.enableبرای فعال کردن ردیابی با ردیابی-perfetto ، به عنوان مثال ردیابی بازپرداخت آهنگسازی اضافه شده است. توجه داشته باشید که در صورت استفاده ازStartupMode.COLD، زمان به میزان قابل توجهی تحت تأثیر قرار می گیرد زیرا کتابخانه ردیابی در هنگام راه اندازی برنامه بارگیری و فعال می شود.
- پشتیبانی از
الزامات
- Macrobenchmark اکنون به
ProfileInstaller1.3.0 یا بیشتر در برنامه هدف نیاز دارد تا بتواند ضبط / تنظیم مجدد نمایه و پاکسازی حافظه پنهان سایه بان را فعال کند.
- Macrobenchmark اکنون به
API های جدید متریک تجربی
-
TraceSectionMetric، که امکان استخراج زمان ساده ازtrace("") {}بلوک در برنامه شما ، یا تراکتوتریک برای استفاده از توانایی کامل پرس و جو از پرفراتوTraceProcessorاضافه می شود. -
PowerMetricتجربی اضافه شده برای گرفتن اطلاعات استفاده از برق - اضافه شده
MemoryCountersMetricبرای شمارش گسل های صفحه - اضافه شده API
PerfettoTraceProcessorتجربی ، که در داخل برای استخراج معیارها از آثار سیستم استفاده می شود (با نام های Perfetto Traces)
-
رفع می کند
- تصادفات ثابت هنگام نصب یا استخراج پروفایل از برنامه نصب شده از چندین APK (به عنوان مثال از بسته نرم افزاری برنامه).
- فریم های نادیده گرفتن
FrameTimingMetricبا شناسه های فریم متناقض (به طور کلی فریم در طول موج در API 31+) ( I747D2 ، B/279088460 ) - خطاهای تجزیه شده بر روی آثار> 64MB ( IEF831 ، B/269949822 )
- خطاهای روشن هنگامی که دستگاه (به خصوص شبیه ساز) تصویر سیستم عامل به درستی برای ردیابی یا تدوین پیکربندی نشده است
- سطح باتری پرش دستگاه های بدون باتری (میکرو و کلان) را بررسی کنید
- خروجی فایل بهبود یافته ، با خطاهای واضح تر برای دایرکتوری های خروجی نامعتبر و پیش فرض های ایمن تر
- پایداری بهبود یافته
StartupMode.COLDبا رها کردن مداوم حافظه نهان سایه بان (همچنین از طریقMacrobenchmarkScope.dropShaderCacheدر معرض دید) - ثابت برگشتی ثابت برای
startActivityAndWait.
میکروب مارک
- ویژگی ها
- پروفایل پس از معیارهای دیگر به یک مرحله جداگانه منتقل شد ، بنابراین یک آزمایش آزمایش می تواند نتایج زمان بندی دقیق و پروفایل را نشان دهد.
- APIهای آزمایشی
- API آزمایشی
MicrobenchmarkConfigبرای تعریف معیارهای سفارشی و پیکربندی ردیابی و پروفایل اضافه شده است. می توان برای ضبط آثار روش یا ضبط نقاط ردیابی (اما از ردیابی سربار آگاه باشید) استفاده شود. - API های تجربی برای کنترل
BenchmarkStateبه طور جداگانه ازBenchmarkRule، بدون Junit اضافه شده است - اضافه شده رکورد
PerfettoTraceتجربی برای فعال کردن ضبط آثار Perfetto ، با پیکربندی سفارشی ، جدا از API های معیار.
- API آزمایشی
- رفع می کند
- راه حل از دست دادن فضای سفید پیشرو در خروجی معیار استودیوی اندرویدی.
- مشکل را برطرف کنید که هشدارها نتوانند در خروجی معیار Android Studio چاپ شوند.
- تصادف
SampledProfilingشده در Android 13 (API 33) و بالاتر. - عملکرد گسترده ای از
dryRunModeبا پرشIsolationActivityو ردیابی پرفولت (حداکثر 10 برابر سریعتر حالت خشک در نسخه های قدیمی سیستم عامل) بهبود یافته است.
نسخه 1.2.0-RC02
6 اکتبر 2023
androidx.benchmark:benchmark-*:1.2.0-rc02 منتشر می شود. نسخه 1.2.0-RC02 شامل این تعهدات است.
رفع اشکال
- خروجی فایل معیار را برطرف کنید تا دیگر کپی کردن پرونده افزونه
BaselineProfileبشکنید. پرونده ها تولید و کپی شده بودند ، اما به گونه ای تغییر نام داده شده بودند که افزونه Gradle آنها را نمی دید. ( i8dbcc ، b/303034735 ، b/296453339 ) - پیام های خطای بارگذاری شفاف-
tracing-perfettoهنگام تزریق از ماژول ماکروبچارک به برنامه هدف.
نسخه 1.2.0-RC01
20 سپتامبر 2023
androidx.benchmark:benchmark-*:1.2.0-rc01 منتشر می شود. نسخه 1.2.0-RC01 شامل این تعهدات است.
رفع اشکال
- یک استثنا (با دستورالعمل های درمانی) اکنون هنگامی پرتاب می شود که ردیابی Perfetto SDK نتواند در یک معیار اولیه شود. ( i6c878 ، b/286228781 )
- هنگام تبدیل روش ART TRACE -> فرمت Perfetto ، تصادف OOM را برطرف کنید. ( i106bd ، b/296905344 )
- (Macrobenchmark) برچسب ردیابی روش روشن هنگام اتصال در خروجی تست استودیو ، و ردیابی روش های ثابت نام پرونده ها در دستگاه/میزبان منحصر به فرد است ، بنابراین با اجرای بیش از یک معیار ، آنها رونویسی نمی شوند. ( I08E65 ، B/285912360 )
- تضمین می کند که دستگاه هنگام ضبط نمایه پایه از خواب بیدار است. ( I503FC )
نسخه 1.2.0-beta05
30 آگوست 2023
androidx.benchmark:benchmark-*:1.2.0-beta05 منتشر می شود. نسخه 1.2.0-beta05 شامل این تعهدات است.
ویژگی های جدید
- افزونه Gradle Profile Profile اکنون از افزونه Android Gradle 8.3 پشتیبانی می کند. ( AOSP/2715214 )
نسخه 1.2.0-beta04
23 آگوست 2023
androidx.benchmark:benchmark-*:1.2.0-beta04 منتشر می شود. نسخه 1.2.0-beta04 شامل این تعهدات است.
ویژگی های جدید
- افزونه Gradle Profile Profile اکنون از افزونه Android Gradle 8.3 پشتیبانی می کند. ( AOSP/2715214 )
رفع اشکال
- خرابی ها را در نوشتن / جابجایی و کشیدن پرونده ها (به ویژه آنهایی که از تست های پارامتر شده) با استفاده از نام های بیشتر پرونده های خروجی ، جلوگیری از "=" و ":" در نام پرونده های خروجی را برطرف کنید. ( i759d8 )
نسخه 1.2.0-beta03
9 آگوست 2023
androidx.benchmark:benchmark-*:1.2.0-beta03 منتشر می شود. نسخه 1.2.0-beta03 شامل این تعهدات است.
تغییرات API
- استدلال اضافه شده برای فیلتر کردن
TraceSectionMetricبه تنها بسته هدف ، به طور پیش فرض ( IA219B ، B/292208786 )
رفع اشکال
- تغییر نام نامگذاری
fullTracing.enableArgrentation بهperfettoSdkTracing.enableبرای سازگاری با نام مصنوعات و سایر منابع.fullTracing.enableبه عنوان یک بازگشت به کار خود ادامه خواهد داد. ( i7cc00 ) - کتابخانه معیار کتابخانه های داخلی (از جمله ردیابی حلقه/فاز میکروب "در حال حاضر در سیستم استودیو ردیابی بیننده و لانه تحت فرآیند صحیح در Perfetto ظاهر می شود. ( i6b2e7 ، b/293510459 )
- ماکروبنچارک را حذف نکرد و خطای قابل استفاده در API 31+ را حذف کرد ، و از بررسی های قابل استفاده در دستگاه های ریشه دار Eng/UserDebug استفاده کنید. ( i2abac ، b/291722507 )
- هنگام استفاده از بهینه سازی طرح DEX ، قوانین پروفایل راه اندازی نیز اکنون به عنوان قوانین مشخصات پایه در نظر گرفته می شوند. ( AOSP/2684246 ، B/293889189 )
نسخه 1.2.0-beta02
26 جولای 2023
androidx.benchmark:benchmark-*:1.2.0-beta02 منتشر می شود. نسخه 1.2.0-beta02 شامل این تعهدات است.
تغییرات API
- API های تجربی برای معیارهای سفارشی میکروبن و پیکربندی اضافه شده (به عنوان مثال پروفایل و ردیابی). ( i86101 ، b/291820856 )
رفع اشکال
- گزارش خطای گزارش در Macrobench هنگامی که سیستم عامل برای ردیابی نادرست است ، همانطور که اخیراً در شبیه سازهای API 26/28 ARM64 ثابت شده است. ( i0a328 ، b/282191686 )
- جزئیات اضافه شده برای تنظیم مجدد تنظیم مجدد در پیشنهاد به روزرسانی شبیه ساز ، زیرا برخی از شبیه سازان اخیراً این مسئله را برطرف کرده اند. ( i8c815 ، b/282191686 )
-
androidx.test.uiautomator:uiautomator:2.2.0apiرا به جای وابستگیimplementation. ( i1981e )
نسخه 1.2.0-beta01
18 جولای 2023
androidx.benchmark:benchmark-*:1.2.0-beta01 منتشر می شود. نسخه 1.2.0-beta01 شامل این تعهدات است.
رفع اشکال
- هشدارها را که گاهی اوقات در خروجی معیار در استودیو سرکوب می شود ، و راه حل های پیشرو در محل های سفید از خروجی معیار که در استودیو نشان داده نمی شود ( IA61D0 ، B/227205461 ، B/286306579 ، B/285912360 )
- نظر ثابت برای
FrameTimingMetric. زیرمجموعه نامگذاریframeDurationCpuMsاست. ( IB097F ، B/288830934 ).
نسخه 1.2.0-alpha16
21 ژوئن 2023
androidx.benchmark:benchmark-*:1.2.0-alpha16 منتشر می شود. نسخه 1.2.0-alpha16 شامل این تعهدات است.
تغییرات API
-
BaselineProfileRule.collectBaselineProfile()API به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
7 ژوئن 2023
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 )
تغییرات API
- API
collectBaselineProfileهمیشه پروفایل های پایه پایدار تولید می کند. APIcollectStableBaselineProfileبرداشته شده است و به جای آن باید ازcollectBaselineProfileاستفاده شود. ( I17262 ، b/281078707 ) -
filterPredicateBaselineProfileRuleتغییر یافته به غیر تهی ، با یک مقدار پیش فرض معادل آن به طوری که رفتار فیلتر پیش فرض در اسناد واضح تر است. ( i3816e )
رفع اشکال
- غیرفعال کردن
IsolationActivityو ردیابی Perfetto درdryRunModeبرای بهبود چشمگیر عملکرد ، زیرا این اکثریت زمان اجرا بودند. ( IE4F7D ) - پشتیبانی از نمونه گیری پشته تماس در ماکروبنچارک ها با استفاده از آرگومان های تست ابزار دقیق
androidx.benchmark.profiling.mode=StackSamplingوandroidx.benchmark.profiling.sampleFrequency. ( i1d13b ، b/282188489 ) - هنگام رها کردن سایه بان ها در Android U (API 34) و همچنین در شبیه سازها ، تصادف را برطرف می کند. ( I031CA ، B/274314544 )
نسخه 1.2.0-alpha14
3 مه 2023
androidx.benchmark:benchmark-*:1.2.0-alpha14 منتشر می شود. نسخه 1.2.0-alpha14 شامل این تعهدات است.
رفع اشکال
- فریم های
FrameTimingMetricبا شناسه های فریم متناقض برطرف کنید. این امر باعث می شود برخی از انیمیشن ها در نسخه های پلت فرم اخیر (API 31+) بسیاری از فریم ها را نادیده بگیرند در حالی کهRenderThreadانیمیشن بود (به عنوان مثال در طول موج). ( i747d2 ، b/279088460 ) - تجزیه و تحلیل پردازنده ردیابی ثابت برای اثری بزرگتر از 64 مگابایت. ( IEF831 ، B/269949822 )
- تولید پروفایل پایه ثابت در Android U به دلیل خروجی مختلف دستور
pm dump-profiles. ( ID1392 ، B/277645214 ) - اسکریپت قفل ساعت GPU را برای مقایسه صحیح رشته ها برطرف کنید ( I53E54 ، B/213935715 )
نسخه 1.2.0-alpha13
5 آوریل 2023
androidx.benchmark:benchmark-*:1.2.0-alpha13 منتشر می شود. نسخه 1.2.0-alpha13 شامل این تعهدات است.
تغییرات API
- پارامتر نوع پروفایل اضافه شده هنگام تولید پروفایل های پایه برای پشتیبانی از ویژگی پروفایل راه اندازی آینده ( IE20D7 ، B/275093123 )
- اضافه شده API
TraceMetricآزمایشی جدید برای تعریف معیارهای کاملاً سفارشی بر اساس محتوای اثری از پرفلتو. ( i4ce31 ، b/219851406 ) - برای تعیین تعداد گسل های صفحه در طی یک معیار ، یک متریک آزمایشی اضافه کنید. ( i48db0 )
نسخه 1.2.0-alpha12
22 مارس 2023
androidx.benchmark:benchmark-*:1.2.0-alpha12 منتشر می شود. نسخه 1.2.0-alpha12 شامل این تعهدات است.
ویژگی های جدید
- افزونه جدید Profile Profile Gradle در نسخه Alpha منتشر می شود و تولید یک پروفایل پایه و ساده سازی گردش کار توسعه دهنده را آسان تر می کند.
تغییرات API
- پشتیبانی از ردیابی پرفراتو را در API 21 و 22 حذف کرد ، که شامل هر دو میکروب مارک ها و API های
PerfettoTraceتجربی است. قبل از این نسخه ، اتصالاتUiAutomationدر برخی از دستگاه ها غیرقابل اعتماد بود. ( i78e8c ) - API تجربی عمومی اضافه شده برای
PerfettoTraceProcessorبرای فعال کردن محتوای ردیابی تجزیه و تحلیل. این گامی به سوی معیارهای کاملاً سفارشی مبتنی بر داده های ردیابی Perfetto است. ( i2659e ، b/219851406 )
نسخه 1.2.0-alpha11
8 مارس 2023
androidx.benchmark:benchmark-*:1.2.0-alpha11 منتشر می شود. نسخه 1.2.0-alpha11 شامل این تعهدات است.
رفع اشکال
- تصادفات ثابت در
MacrobenchmarkRuleوBaselineProfileRuleهنگام نصب مجدد یا استخراج پروفایل از یک بسته نرم افزاری برنامه با APK های متعدد. ( I0D8C8 ، B/270587281 )
نسخه 1.2.0-alpha10
22 فوریه 2023
androidx.benchmark:benchmark-*:1.2.0-alpha10 منتشر می شود. نسخه 1.2.0-alpha10 شامل این تعهدات است.
ویژگی های جدید
- On Android 14+, Macrobenchmark no longer reinstalls target applications to reset compilation state, thanks to a new platform feature. پیش از این لازم بود که یک دستگاه ریشه دار داشته باشید ، یا مقابله با تمام حالت برنامه (به عنوان مثال ورود کاربر) قبل از اجرای هر معیار حذف شود. ( i9b08c ، b/249143766 )
رفع اشکال
- به دلیل پرش از تدوین ،
DryRunModeبا مشخصات خالی دیگر خراب نکنید. در عوض ، یک تکرار واحد را اجرا می کند و نمایه را برای اطمینان از اسیر چیزی استخراج می کند. ( I2F05D ، B/266403227 ) - هنگام بررسی حضور PowerStats در سطح API قدیمی ، تصادف
PowerMetricبرطرف کنید. ( 5FAAF9 ، B/268253898 )
نسخه 1.2.0-alpha09
11 ژانویه 2023
androidx.benchmark:benchmark-*:1.2.0-alpha09 منتشر می شود. نسخه 1.2.0-alpha09 شامل این تعهدات است.
رفع اشکال
- فعال کردن
Noneبهandroidx.benchmark.enabledRulesArg Arg برای غیرفعال کردن همه معیارها / تولید مشخصات پایه. ( i3d7fd ، b/258671856 ) - ضبط
PerfettoTraceدر ماژول های برنامه (یعنی APK های آزمایش غیر شخصی سازی) ( I12CFC ) - مشخصات پایه ثابت ADB سفارش آرگومان در خروجی استودیو ( I958D1 ، B/261781624 )
- ARM Emulator API 33 اکنون هنگام تلاش برای اجرای یک ماکروبچارک به درستی به عنوان چنین شناخته شده است و هشدار را به درستی چاپ می کند. ( 69133b ، b/262209591 )
- بررسی سطح باتری در دستگاههای بدون باتری در ماکروبنچارک ( FE4114 ، B/232448937 )
نسخه 1.2.0-alpha08
7 دسامبر 2022
androidx.benchmark:benchmark-*:1.2.0-alpha08 منتشر می شود. نسخه 1.2.0-alpha08 شامل این تعهدات است.
تغییرات API
- اضافه شده APIS جدید
PerfettoTrace.record {}وPerfettoTraceRuleبرای ضبط آثار perfetto (که به عنوان آثار سیستم نیز شناخته می شود) به عنوان بخشی از یک آزمایش ، برای بازرسی از رفتار و عملکرد آزمون. ( i3ba16 ) -
BaselineProfileRuleاکنون به جای لیستی از پیشوندهای بسته ، یک محمول فیلتر را می پذیرد. این کار کنترل کامل را در زمینه فیلتر فراهم می کند. ( i93240 ) - یک API تجربی
BaselineProfileRule.collectStableBaselineProfileاضافه کنید. ( i923f3 ) - هنگام تولید پروفایل های پایه با استفاده از
BaselineProfileRule، امکان مشخص کردن پیشوند نام پرونده خروجی را اضافه کنید. ( i7b59f ، b/260318655 )
رفع اشکال
- ایمنی نوشتن خروجی فایل را بهبود بخشید ، که باید از عدم نوشتن / ضمیمه شدن پرونده های خروجی جلوگیری کند ، به خصوص در API 21/22. ( IF8C44 ، B/227510293 )
- برای ایجاد و قرار دادن صحیح فایل ، خروجی ردیابی
simpleperfرا برطرف کنید. این همچنین باید به طور کلی مواردی را که یک پرونده به طور ناموفق توسط Gradle کشیده می شود ، برطرف کند. ( i12a1c ، b/259424099 ) - بهبود پیام خطای ProfileInstaller چاپ شده هنگامی که ProfileInstaller خیلی قدیمی است. این اکنون به شما می گوید نسخه ProfileInstaller (1.2.1) را برای اندازه گیری پروفایل های پایه در API 31 تا 33 به روز کنید ، به جای اینکه بگویید پشتیبانی نمی شود. ( IA517F ، B/253519888 )
- چندین خرابی فرمان پوسته را برطرف کنید چاپ پیام ONERROR مورد نیاز API <= 23 ، از جمله تنظیمات باینری ضبط پرفلات و خرابی ضبط ردیابی ( IB6B87 ، B/258863685 )
- به طور خودکار قوانین پروفایل تولید شده را مرتب کنید تا تعداد تغییرات را به حداقل برساند زیرا در طول زمان تغییر می کنند (هنگام بررسی قوانین نمایه در کنترل منبع). ( IE2509 )
- تصادف ثابت در ساختهای Unooted در زیر Android 13 (API 33) با پیام
Expected no stderr from echo 3 > /proc/sys/vm/drop_caches( I6C245 ، B/259508183 )
مسائل شناخته شده - MacrobenchmarkScope.dropShaderCache() ممکن است به دلیل ثبت نام مفقود شده در مانیفست پروفایل ، که هنوز منتشر نشده است ، خراب شود. ( 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
9 نوامبر 2022
androidx.benchmark:benchmark-*:1.2.0-alpha07 منتشر می شود. نسخه 1.2.0-alpha07 شامل این تعهدات است.
تغییرات API
- API
PowerMetricرا برای اندازه گیری انرژی و قدرت در ماکروبچارک ها اضافه می کند. ( IFE601 ، B/220183779 ) - ثابت
MacrobenchmarkScope.dropShaderCache()برای رها کردن حافظه نهان سایه بان. این تقریباً 20 متر نویز از معیارهایStartupMode.COLDحذف می کند. پیش از این ، تدوینPartialبا استفاده از تکرارهای گرمایش ، تعداد نادرست سریع را گزارش می کند ، زیرا ذخیره سازی سایه بان به احتمال زیاد در هنگام گرم شدن اتفاق می افتد. این رفع نیاز به یک دستگاه ریشه دار یا استفاده ازprofileinstaller:1.3.0-alpha02در برنامه هدف. برای تغییرات API کتابخانهProfileInstaller، لطفاً به صفحه ProfileInstaller 1.30-Alpha02 مراجعه کنید. ( IA5171 ، B/231455742 ) - اضافه شده
TraceSectionMode("label", Mode.Sum)، امکان اندازه گیری کل زمان صرف شده در بخش های چند ردیابی با همان برچسب را فراهم می کند. به عنوان مثال ،TraceSectionMetric("inflate", Mode.Sum)یکinflateMsمعیار را برای کل زمان در یک ماکروبچارک صرف شده برای تورم گزارش می دهد. همچنین نیاز API 29 را حذف کرد ، زیراTraceSectionMetricهمراه باandroidx.tracing.Traceبه سطح API پایین تر ، با استفاده ازforceEnableAppTracingدر برنامه هدف ، بازگشت. ( id7b68 ، b/231455742 )
رفع اشکال
- ایمنی بهبود یافته کلیه دستورات پوسته داخلی با اعتبارسنجی کلیه خروجی ها/خطاها. ( i5984d ، b/255402908 ، b/253094958 )
- دستگاه را در مشخصات اولیه
adb pullمشخص کنید ، بنابراین در صورت اتصال چندین دستگاه (حداکثر یک شبیه ساز) می توان دستور کشش را کپی کرد ( I6AC6C ، B/223359380 ) - اگر APK Test Macrobenchmark به عنوان خود سازی تنظیم نشده باشد ، خطا را اضافه کنید. این خطا مانع از ورود ماکروبنچرم در فرآیند برنامه هدف می شود. در حال انجام ، Macrobench قادر به کامپایل/کشتن/سرماخوردگی برنامه نیست یا مجوزهای خود را کنترل می کند ( I4279B )
- مسئله ای را در
measureRepeated()که در آن راهStartupMode.COLDsetupBlockبرطرف می کند. اکنونsetupBlockدر تعامل با برنامه ، روند برنامه را اجرا نمی کند و اندازه گیری شروع سرما نامعتبر است. ( i8ebb7 )
نسخه 1.2.0-alpha06
24 اکتبر 2022
androidx.benchmark:benchmark-*:1.2.0-alpha06 منتشر می شود. نسخه 1.2.0-alpha06 شامل این تعهدات است.
تغییرات API
-
BaselineProfileRuleدیگر نیازی به ریشه در اندروید 13 (API 33) ندارد و دیگر آزمایشی نیست. ( IE0A7D ، B/250083467 ، B/253094958 )- این تغییر همچنین چگونگی پروفایل های یک برنامه را به دیسک در دستگاه های بدون استفاده ، برطرف می کند ، اما نیاز به به روزرسانی وابستگی پروفایل برنامه هدف دارد.
- برای استفاده از
BaselineProfileRuleیاCompilationMode.Partial(warmupIterations)در یک دستگاه بدون استفاده ، باید برنامه هدف خود را نیز به روز کنید تا ازandroidx.profileinstaller.profileinstaller:1.3.0-alpha01. این امکان را می دهد تا نمایه را به درستی دیسک به درستی انجام دهد ، به طوری که می توان آن را گردآوری و استخراج کرد.
رفع اشکال
- رفع خرابی
SampledProfilingدر API 33+. ( i40743 ، b/236109374 )
نسخه 1.2.0-alpha05
5 اکتبر 2022
androidx.benchmark:benchmark-*:1.2.0-alpha05 منتشر می شود. نسخه 1.2.0-alpha05 شامل این تعهدات است.
رفع اشکال
- رفع خرابی قاب در سیستم استودیو ردیابی بیننده برای معیار آثار ضبط شده ( i3f3ae ، b/239677443 )
- درست
FrameTimingMetricبرای لیستFrameOverrunبه عنوان نیاز به API 31 به جای 29 ( I716DD ، B/220702554 ) - تکرار را در
BaselineProfileRuleتنظیم کنید ، و اگر بسته هدف نصب نشده است (قبلاً برای macrobenchmarkrule انجام شده است) به وضوح پرتاب کنید. ( IC09A3 ، B/227991471 )
نسخه 1.2.0-alpha04
21 سپتامبر 2022
androidx.benchmark:benchmark-*:1.2.0-alpha04 منتشر می شود. نسخه 1.2.0-alpha04 شامل این تعهدات است.
ویژگی های جدید
برای توسعه سریع محلی و اعتبار سنجی اتوماسیون برنامه (به عنوان مثال در presubmit) ، پشتیبانی از
dryRunMode.enableArgrentation را به macrobenchmark (که در حال حاضر در میکرو موجود است) اضافه کنید. این تکرار تکرار به 1 ، از تلفیق است ، همه خطاهای پیکربندی را سرکوب می کند و اندازه گیری خروجی فایل .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(). این بدان معناست که متریک می تواند پرتاب هایی را از EG اعلان ها ،Context.startActivity()، ناوبری مبتنی بر فعالیت در برنامه یا دستورات پوسته انتخاب کند. ( IA2DE6 ، B/245414235 ) - رفع اشکال در جایی که
startActivityAndWaitبا کاهش سخت گیری در تشخیص قاب ، سعی در انتظار برای تکمیل راه اندازی بر روی شبیه سازها می کند. ( IBE2C6 ، B/244594339 ، B/228946895 )
نسخه 1.2.0-alpha03
7 سپتامبر 2022
androidx.benchmark:benchmark-*:1.2.0-alpha03 منتشر می شود. نسخه 1.2.0-alpha03 شامل این تعهدات است.
ویژگی های جدید
- Added experimental APIs for using
BenchmarkStateindependently, separate fromBenchmarkRule/JUnit4. ( Id478f , b/228489614 )
رفع اشکال
- Added Leanback fallback for
startActivityAndWait. ( 01ed77 , b/242899915 )
Version 1.2.0-alpha02
24 آگوست 2022
androidx.benchmark:benchmark-*:1.2.0-alpha02 is released. Version 1.2.0-alpha02 contains these commits.
تغییرات API
- Default to
am force stopforMacrobenchmarkScope.killProcess(), even when rooted, except during Baseline Profile generation. This can be overridden with an optional boolean argument. ( 02cce9 , b/241214097 )
رفع اشکال
- Support baseline profile generation for System apps. ( I900b8 , b/241214097 )
- Support checking for ODPM power metrics on unrooted devices. ( a38c78 , b/229623230 )
نسخه 1.2.0-alpha01
27 جولای 2022
androidx.benchmark:benchmark-*:1.2.0-alpha01 is released. Version 1.2.0-alpha01 contains these commits.
ویژگی های جدید
- New tracing-perfetto-common component allowing tooling to enable Perfetto SDK tracing in an app that exposes it ( I2cc7f )
Added
androidx.benchmark.enabledRulesinstrumentation argument to enable filtering macrobenchmark runs to just benchmarks, or just baseline profile generation. Pass in 'Macrobenchmark', or 'BaselineProfile' to just run one type of test, eg when just generatingBaselineProfileson an emulator. Comma-separated list also Supported. ( I756b7 , b/230371561 )Eg in Your macrobenchmark's build.gradle:
android { defaultConfig { testInstrumentationRunnerArgument 'androidx.benchmark.enabledRules', 'BaselineProfile' } }Or from the Gradle command line:
./gradlew macrobenchmark:cC -P android.testInstrumentationRunnerArguments.androidx.benchmark.enabledRules=BaselineProfile
تغییرات API
- Added new
PowerMetricfor measuring energy and power tasks in benchmarks. ( I9f39b , b/220183779 ) - Added a new compilation mode
CompilationMode.Ignoreto skip profile reset and compilation. ( Ibbcf8 , b/230453509 ) - Added a new parameter to
BaselineProfileRule#collectBaselineProfileto filter output file by package names ( If7338 , b/220146561 ) - Enables developer to discharge device to measure power drain. ( I6a6cb )
- Added the ability to clear shader cache in
MacrobenchmarkScope. ( I32122 ) - Enables developer to configure display of metric type and detail desired subsystem categories. ( I810c9 )
- Previously an
UnsupportedOperationExceptionwas thrown in the benchmark if run on an unsupported device. Now UOE only occurs if the metric is used on the unsupported device (ie:PowerMetric.configure). ( I5cf20 , b/227229375 ) - Added
TotalPowerMetricandTotalEnergyMetricfor measuring total power and energy in each system category in macrobenchmarks. ( I3b26b , b/224557371 )
رفع اشکال
- Fixed an issue where compiled methods were not correctly being reset between each macrobenchmark on unrooted builds. This unfortunately requires reinstalling the apk each iteration, which will clear application data for each macrobenchmark. ( I31c74 , b/230665435 )
- Fix trace recording crash on 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 )
نسخه 1.1.1
نسخه 1.1.1
9 نوامبر 2022
androidx.benchmark:benchmark-*:1.1.1 is released. Version 1.1.1 contains these commits.
رفع اشکال
- Fixes
android.system.ErrnoException: open failed: EACCESwhich would occur on some Android11 (API 30)+ devices. This is a cherry-pick of a fix from1.2.0-alpha01. ( aosp/2072249 )
نسخه 1.1.0
نسخه 1.1.0
15 ژوئن 2022
androidx.benchmark:benchmark-*:1.1.0 is released. Version 1.1.0 contains these commits.
- This version is identical to
androidx.benchmark:benchmark-*:1.1.0-rc03.
تغییرات مهم از 1.0.0
Support for Jetpack Macrobenchmarks, which allows you to measure whole-app interactions like startup and scrolling , provides the ability to capture traces & measure trace sections .
Support for Baseline Profiles
-
CompilationMode.Partialto measure the effectiveness of Baseline Profiles. -
@BaselineProfileRuleto automatically generate Baseline profiles for a given critical user journey.
-
Support for Allocation metrics & profiling during Microbenchmark runs.
Version 1.1.0-rc03
1 ژوئن 2022
androidx.benchmark:benchmark-*:1.1.0-rc03 is released. Version 1.1.0-rc03 contains these commits.
رفع اشکال
Avoid reinstalling the target package on every benchmark iteration. ( aosp/2093027 , b/231976084 )
Remove the
300msdelay frompressHome(). ( aosp/2086030 , b/231322975 )Improve Macrobenchmark iteration speed by optimizing Shell commands used under the hood. ( aosp/2086023 , b/231323582 )
Support for Managed Gradle Devices when generating Baseline Profiles with Macrobenchmarks. ( aosp/2062228 , b/228926421 )
Version 1.1.0-rc02
11 مه 2022
androidx.benchmark:benchmark-*:1.1.0-rc02 is released. Version 1.1.0-rc02 contains these commits.
- Note that this release includes a behavior change, as apps are now fully reinstalled in between each benchmark to ensure accurate measurements.
Bug Fixes/Behavior Changes
Fixed an issue where app compilation was not correctly reset between macrobenchmarks, and not reset at all on unrooted builds. This fixes many cases where running multiple tests would result in
CompilationModehaving little to no effect on measurements. To workaround this problem, the target app is now fully reinstalling each test method, which will clear application data between each macrobenchmark. ( I31c74 , b/230665435 )As this prevents apps from setting up state before tests, it is now possible to skip compilation / reinstallation to enable working around this. You can for example fully compile the target with a shell command
cmd package compile -f -m speed <package>, and then bypass macrobenchmark's compilation step.Eg in Your macrobenchmark's build.gradle:
android { defaultConfig { testInstrumentationRunnerArgument 'androidx.benchmark.compilation.enabled, 'false' } }Or from the Gradle command line:
./gradlew macrobenchmark:cC -P android.testInstrumentationRunnerArguments.androidx.benchmark.compilation.enabled=falseMade it possible to share a module between macrobenchmarks and baseline profile generating tests by adding
androidx.benchmark.enabledRulesinstrumentation argument. Pass in 'Macrobenchmark', or 'BaselineProfile' to just run one type of test, eg when generatingBaselineProfileson an emulator. ( I756b7 , b/230371561 )Eg in Your macrobenchmark's build.gradle:
android { defaultConfig { testInstrumentationRunnerArgument 'androidx.benchmark.enabledRules', 'BaselineProfile' } }Or from the Gradle command line:
./gradlew macrobenchmark:cC -P android.testInstrumentationRunnerArguments.androidx.benchmark.enabledRules=BaselineProfile
نسخه 1.1.0-rc01
20 آوریل 2022
androidx.benchmark:benchmark-*:1.1.0-rc01 is released. Version 1.1.0-rc01 contains these commits.
رفع اشکال
- Baseline profile output links in Android Studio now use a unique file name. This way the output always reflects the latest results of using a
BaselineProfileRule. ( aosp/2057008 , b/228203086 )
Version 1.1.0-beta06
6 آوریل 2022
androidx.benchmark:benchmark-*:1.1.0-beta06 is released. Version 1.1.0-beta06 contains these commits.
رفع اشکال
- Fix trace recording crash on API 21/22 ( If7fd6 , b/227509388 )
- Overhaul activity launch completion detection to fix 'Unable to read any metrics' exception in startup macrobenchmarks. ( Ia517c )
- Fix startup metrics for Macrobenchmarks when
CompilationMode.None()is used. Before this change,CompilationMode.Partial()would appear to be slower thanCompilation.None(). ( 611ac9 ).
Version 1.1.0-beta05
23 مارس 2022
androidx.benchmark:benchmark-*:1.1.0-beta05 is released. Version 1.1.0-beta05 contains these commits.
رفع اشکال
- Kill package after skipping profile installation when using
CompilationMode.None. ( aosp/1991373 ) - Fixed an issue where Macrobenchmarks is unable to collect startup metrics when using
StartupMode.COLD. ( aosp/2012227 b/218668335 )
Version 1.1.0-beta04
23 فوریه 2022
androidx.benchmark:benchmark-*:1.1.0-beta04 is released. Version 1.1.0-beta04 contains these commits.
رفع اشکال
Fix missing metrics on Android 10, and
NoSuchElementExceptioncaused by process names not being captured correctly in traces. ( Ib4c17 , b/218668335 )Use
PowerManagerfor thermal throttling detection on Q (API 29) and higher. This significantly reduces frequency of false positives in thermal throttling detection (benchmark retry after 90 second cooldown), and speeds up benchmarks significantly on user builds. It also provides throttle detection even when clocks are locked (if they're locked too high for the device's physical environment). ( I9c027 , b/217497678 , b/131755853 )Filter simpleperf sampled profiling to
measureRepeatedthread only to simplify inspection ( Ic3e12 , b/217501939 )Support metrics from named UI subprocesses in multi-process apps ( Ice6c0 , b/215988434 )
Filter Baseline Profile rules to target Android 9 (SDK 28). aosp/1980331 b/216508418
Skip Profile Installation when using
Compilation.None(). Additionally, report warnings when the app is using an older version ofandroidx.profileinstallerand Android Gradle Plugin. aosp/1977029
Version 1.1.0-beta03
9 فوریه 2022
androidx.benchmark:benchmark-*:1.1.0-beta03 is released. Version 1.1.0-beta03 contains these commits.
تغییرات API
- Added
AudioUnderrunMetricinto macrobenchmark library under experimental flag to allow detection of audio underruns ( Ib5972 ) BaselineProfileRuleno longer accepts asetupblock as this functioned the same as theprofileBlock. ( Ic7dfe , b/215536447 )برای مثال
@Test fun collectBaselineProfile() { baselineRule.collectBaselineProfile( packageName = PACKAGE_NAME, setupBlock = { startActivityAndWait() }, profileBlock = { // ... } ) }@Test fun collectBaselineProfile() { baselineRule.collectBaselineProfile( packageName = PACKAGE_NAME, profileBlock = { startActivityAndWait() // ... } ) }
رفع اشکال
- Fixed issue where microbench profiler traces would fail to be updated in subsequent runs when linked in Studio output ( I5ae4d , b/214917025 )
- Prevent compilation shell commands on API 23 ( Ice380 )
- Renamed
FrameCpuTime->FrameDurationCpu,FrameUiTime->FrameDurationUito clarify these are durations, not timestamps, and to match prefixes. ( I0eba3 , b/216337830 )
Version 1.1.0-beta02
26 ژانویه 2022
androidx.benchmark:benchmark-*:1.1.0-beta02 is released. Version 1.1.0-beta02 contains these commits.
رفع اشکال
- Microbenchmark Stack Sampling / Method Tracing Profile results are now linked in Studio output, similar to other profiling outputs, and do not suppress the allocation metric. ( Idcb65 , b/214440748 , b/214253245 )
- BaselineProfileRule now prints the
adb pullcommand in logcat and Studio output for pulling generated BaselineProfile text file. ( f08811 )
نسخه 1.1.0-beta01
12 ژانویه 2022
androidx.benchmark:benchmark-*:1.1.0-beta01 is released. Version 1.1.0-beta01 contains these commits.
رفع اشکال
- Fixes profiler argument enable being ignored. ( I37373 , b/210619998 )
- Removed deprecated
CompliationModes( I98186 , b/213467659 ) - Switched baseline profile arg of
CompilationMode.Partialto enum for clarity. ( Id67ea )
Version 1.1.0-alpha13
15 دسامبر 2021
androidx.benchmark:benchmark-*:1.1.0-alpha13 is released. Version 1.1.0-alpha13 contains these commits.
تغییرات API
- Add low-overhead System Tracing to microbench output on Android Q (API 29+). Note that this does not currently capture custom tracing (via
android.os.Traceorandroidx.tracingJetpack APIs) to avoid affecting results. This tracing should be useful in diagnosing instability, especially from sources outside the benchmark. ( I298be , b/205636583 , b/145598917 ) - Clarify
CompilationModesinto three classes - Full, None, Partial. Previously they were inconsistently named after compilation arguments (which we now treat as implementation details) and features. This makes the tradeoffs, potential combinations, and behavior across platform versions more clear. ( I3d7bf , b/207132597 ) - Setup and measure are now always in pairs, in order. You can now query the package name and iteration (though the iteration may be
nullin certain warmup scenarios). ( Id3b68 , b/208357448 , b/208369635 )
رفع اشکال
- Fixed
CompilationMode.Speedincorrectly treated asNone( I01137 )
Version 1.1.0-alpha12
17 نوامبر 2021
androidx.benchmark:benchmark-*:1.1.0-alpha12 is released. Version 1.1.0-alpha12 contains these commits.
ویژگی های جدید
- Add experimental TraceSectionMetric for custom trace-based timing measurements. ( I99db1 , b/204572664 )
رفع اشکال
- Wake device each iteration, to ensure UI can be tested - requires lockscreen is disabled. ( Ibfa28 , b/180963442 )
- Fixes multiple crashes in StackSampling profiling mode on emulators and non-rooted devices ( Icdbda , b/202719335 )
- Removed 0.5 second sleep at the end of each iteration - if you see missing metrics with this change, please file a bug. ( Iff6aa )
- Reduce chances of dropped data, and lower memory overhead from tracing ( Id2544 , b/199324831 , b/204448861 )
- Reduce trace size by ~40% by switching to compact sched storage format. ( Id5fb6 , b/199324831 )
- Updated implementations of startup metrics to always end at end of renderthread. This will be more contistent across platform versions, and more closely map to in-app measurements. ( Ic6b55 )
Version 1.1.0-alpha11
3 نوامبر 2021
androidx.benchmark:benchmark-*:1.1.0-alpha11 is released. Version 1.1.0-alpha11 contains these commits.
تغییرات API
- Macrobenchmark now has a
minSdkVersionof23. ( If2655 ) - Adds a new experimental
BaselineProfileRulewhich is capable of generating baseline profiles for app's critical user journey. Detailed documentation to follow. ( Ibbefa , b/203692160 ) - Removes measureRepeated interface variant, which was added for java callers, as it caused ambiguity in completing/resolving the method. Java callers will again need to return Unit.Instance from measureRepeated. If this is an inconvenience, please file a bug, we can revisit this in a future version. ( Ifb23e , b/204331495 )
Version 1.1.0-alpha10
27 اکتبر 2021
androidx.benchmark:benchmark-*:1.1.0-alpha10 is released. Version 1.1.0-alpha10 contains these commits.
تغییرات API
- Backport StartupTimingMetric to work back to API 23. This new implementation also better handles reportFullyDrawn() to wait until corresponding content has been rendered. ( If3ac9 , b/183129298 )
- Added JvmOverloads to multiple MacrobenchmarkScope methods for Java callers. ( I644fe , b/184546459 )
- Provide alternative MacrobenchmarkRule.measureRepeated function that uses a
Consumer<MacrobenchmarkScope>for idiomatic usage in Java language. ( If74ab , b/184546459 )
رفع اشکال
- Fix for traces not starting early enough, and missing metric data. This is expected to fix "Unable to read any metrics during benchmark" exceptions that were caused by the library itself. ( I6dfcb , b/193827052 , b/200302931 )
- FrameNegativeSlack has been renamed to FrameOverrun to clarify its meaning - how much the frame went over its time budget. ( I6c2aa , b/203008701 )
Version 1.1.0-alpha09
13 اکتبر 2021
androidx.benchmark:benchmark-*:1.1.0-alpha09 is released. Version 1.1.0-alpha09 contains these commits.
رفع اشکال
- Support dropping Kernel page cache without root on API 31/S+, which will increase accuracy of StartupMode.COLD launches. ( Iecfdb , b/200160030 )
Version 1.1.0-alpha08
29 سپتامبر 2021
androidx.benchmark:benchmark-*:1.1.0-alpha08 is released. Version 1.1.0-alpha08 contains these commits.
تغییرات API
- Enable scrolling macrobenchmarks to run back to 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 )
- Switch to floating point metrics throughout the benchmark libraries (truncated in the Studio UI). ( I69249 , b/197008210 )
Version 1.1.0-alpha07
1 سپتامبر 2021
androidx.benchmark:benchmark-*:1.1.0-alpha07 is released. Version 1.1.0-alpha07 contains these commits.
تغییرات API
- Raised min API to 21 to reflect the intended lowest API level to be supported in the future. Current min API supported continues to be conveyed via RequiredApi(), and is currently 29 ( I440d6 , b/183129298 )
رفع اشکال
- Fixes
ProfileInstallerto make it easier for apps using baseline profiles to run MacroBenchmarks usingCompilationMode.BaselineProfile. ( I42657 , b/196074999 ) NOTE: requires also updating toandroidx.profileinstaller:profileinstaller:1.1.0-alpha04or greater. -
StartupMode.COLD+CompilationMode.Nonebenchmarks are now more stable. ( I770cd , b/196074999 )
Version 1.1.0-alpha06
18 آگوست 2021
androidx.benchmark:benchmark-*:1.1.0-alpha06 is released. Version 1.1.0-alpha06 contains these commits.
تغییرات API
- Added
androidx.benchmark.iterationsinstrumentation argument to allow manual overriding of iteration count when testing/profiling locally. ( 6188be , b/194137879 )
رفع اشکال
- Switched to Simpleperf as default sampling profiler on API 29+. ( Ic4b34 , b/158303822 )
مسائل شناخته شده
-
CompilationMode.BaselineProfileis a work in progress. Avoid using it to determine how good a profile is for now.
نسخه 1.1.0-alpha05
4 آگوست 2021
androidx.benchmark:benchmark-*:1.1.0-alpha05 is released. Version 1.1.0-alpha05 contains these commits.
1.1.0-alpha04 was cancelled before release due to a sporatic crash. b/193827052
تغییرات API
- Switched startActivityAndWait to invoke launch via
am start, which reduces the time of each measurement iteration by approximately 5 seconds, at the cost of no longer supporting intent parcelables. ( I5a6f5 , b/192009149
رفع اشکال
- Reduce aggressiveness of thermal throttle detection, and recompute baseline if throttles are detected frequently. ( I7327b )
- Fixes FrameTimingMetric to work on Android S beta ( Ib60cc , b/193260119 )
- Use an
EmptyActivityto bring the target app out of a force-stopped state to better supportCompilationMode.BaselineProfile. ( Id7cac , b/192084204 ) - Changed trace file extension to
.perfetto-traceto match platform standard. ( I4c236 , b/174663039 ) - StartupTimingMetric now outputs the "fullyDrawnMs" metric to measure time until your application has completed rendering. To define this metric for your app, call Activity.reportFullyDrawn when your initial content is ready, such as when your initial list items are loaded from DB or network. (reportFullyDrawn method available without build version checks on ComponentActivity). Note that your test must run long enough to capture the metric (startActivityAndWait doesn't wait for reportFullyDrawn). ( If1141 , b/179176560 )
- Reduce cost of appending Ui metadata to traces by 50+ ms ( Ic8390 , b/193923003 )
- Drastically increased polling frequency when stopping tracing, which can reduce eg startup benchmark runtime by 30+% ( Idfbc1 , b/193723768 )
Version 1.1.0-alpha03
16 ژوئن 2021
androidx.benchmark:benchmark-*:1.1.0-alpha03 is released. نسخه 1.1.0-alpha03 حاوی این commit ها است.
ویژگی های جدید
- Added a new
CompilationMode.BaselineProfileto support profiles installed using the Jetpack ProfileInstaller library . ( aosp/1720930 )
رفع اشکال
The sample Gradle code for suppressing benchmark errors has been updated to use a non-deprecated API with a syntax that also supports .gradle.kts users.
به عنوان مثال،
testInstrumentationRunnerArguments["androidx.benchmark.suppressErrors"] = "EMULATOR,LOW-BATTERY"
نسخه 1.1.0-alpha02
18 مه 2021
Benchmark version 1.1.0-alpha02 brings a big component to benchmarking - Macrobenchmark. In addition to benchmark allowing you to measure CPU loops, macrobenchmark allows you to measure whole-app interactions like startup and scrolling, and capture traces. For more information see the library documentation .
androidx.benchmark:benchmark-*:1.1.0-alpha02 is released. نسخه 1.1.0-alpha02 حاوی این commit ها است.
ویژگی های جدید
Macrobenchmark artifacts added ( androidx.benchmark:benchmark-macro-junit4 and androidx.benchmark:benchmark-macro )
- Capture startup, scrolling/animation performance metrics from your app, locally or in CI
- Capture and inspect traces from within Android Studio
رفع اشکال
- Workaround shell permissions issue with output directory on Android 12 (Note - may require updating Android Gradle Plugin to 7.0.0 canary and Android Studio to Arctic Fox (2020.3.1), to continue capturing output files on affected devices). ( Icb039 )
- Support configuration caching in BenchmarkPlugin ( 6be1c1 , b/159804788 )
- Simplified file output - on by default, in a directory that doesn't require
requestLegacyExternalStorage=true( 8b5a4d , b/172376362 ) - Fixes library printing logcat warnings about not finding JIT thread on platform versions where it is not present. ( I9cc63 , b/161847393 )
- Fix for reading device max frequency. ( I55c7a )
نسخه 1.1.0-alpha01
10 ژوئن 2020
androidx.benchmark:benchmark-common:1.1.0-alpha01 , androidx.benchmark:benchmark-gradle-plugin:1.1.0-alpha01 , and androidx.benchmark:benchmark-junit4:1.1.0-alpha01 are released. Version 1.1.0-alpha01 contains these commits.
New Features of 1.1
- Allocation Metric - Benchmarks now run an additional phase after warmup and timing, capturing allocation counts. Allocations can cause performance problems on older versions of the platform (140ns in O became 8ns in M - measured on Nexus5X, with locked clocks). This metric is displayed in Android Studio console output, as well as in the
- Profiling support - You can now capture profiling data for a benchmark run, to inspect why your code may be running slowly. Benchmark supports capturing either method tracing, or method sampling from ART. These files can be inspected with the Profiler inside Android Studio using File > Open .
- The Benchmark Gradle plugin now provides defaults for simpler setup:
-
testBuildTypeis set to release by default, to avoid using dependencies with code coverage built-in. The release buildType is also configured as the default buildType, which allows Android Studio to automatically select the correct build variant when opening a project for the first time. ( b/138808399 ) -
signingConfig.debugis used as the default signing config ( b/153583269 )
-
** Bug Fixes **
- Significantly reduced the warmup transition overhead, where the first measurement for each benchmark was artificially higher than others. This issue was more pronounced in very small benchmarks (1 microsecond or less). ( b/142058671 )
- Fixed
InstrumentationResultParsererror printed for each benchmark when running from command line. ( I64988 , b/154248456 )
مسائل شناخته شده
- Command line, gradle invocations of Benchmark do not print out results directly. You can work around this by either running through Studio, or parsing the JSON output file for results.
- Benchmark reporting fails to pull the report from devices that have an app installed with an applicationId ending with either “android” or “download” (case insensitive). Users hitting this issue should upgrade the Android Gradle Plugin to 4.2-alpha01 or later.
نسخه 1.0.0
Benchmark Version 1.0.0
20 نوامبر 2019
androidx.benchmark:benchmark-common:1.0.0 , androidx.benchmark:benchmark-gradle-plugin:1.0.0 , and androidx.benchmark:benchmark-junit4:1.0.0 are released with no changes from 1.0.0-rc01. Version 1.0.0 contains these commits .
ویژگی های اصلی 1.0.0
The Benchmark library allows you to write performance benchmarks of app code and get results quickly.
It prevents build and runtime configuration issues and stabilizes device performance to ensure that measurements are accurate and consistent. Run the benchmarks directly in Android Studio , or in Continuous Integration to observe code performance over time, and to prevent regressions.
Major features include:
- Clock stabilization
- Automatic thread prioritization
- Support for UI performance testing, such as in the RecyclerView Sample
- JIT-aware warmup and looping
- JSON benchmark output for post-processing
نسخه 1.0.0-rc01
23 اکتبر 2019
androidx.benchmark:benchmark-common:1.0.0-rc01 , androidx.benchmark:benchmark-gradle-plugin:1.0.0-rc01 , and androidx.benchmark:benchmark-junit4:1.0.0-rc01 are released. Version 1.0.0-rc01 contains these commits .
ویژگی های جدید
- Added systrace tracing to benchmarks
رفع اشکال
- Fixed metric instability issue where JIT wouldn't finish before warm up due to deprioritization ( b/140773023 )
- Unified JSON output directory across Android Gradle Plugin 3.5 and 3.6
نسخه 1.0.0-beta01
9 اکتبر 2019
androidx.benchmark:benchmark-common:1.0.0-beta01 , androidx.benchmark:benchmark-gradle-plugin:1.0.0-beta01 , and androidx.benchmark:benchmark-junit4:1.0.0-beta01 are released. Version 1.0.0-beta01 contains these commits .
ویژگی های جدید
- Run garbage collection before each warmup to reduce memory pressure from one benchmark to leak to the next ( b/140895105 )
رفع اشکال
- Added
androidx.annotation:android-experimental-lintdependency, so that Java code will correctly produce lint errors when experimental API is not used, similar to what is provided by the Kotlin experimental annotation for Kotlin callers. - Now correctly detects usage of
additionalTestOutputDirinstrumentation argument for output in Android Gradle Plugin 3.6, to know when AGP will handle data copy. - Fix undetected clock frequency in JSON to correctly print
-1( b/141945670 ).
نسخه 1.0.0-alpha06
18 سپتامبر 2019
androidx.benchmark:benchmark-common:1.0.0-alpha06 , androidx.benchmark:benchmark-gradle-plugin:1.0.0-alpha06 , and androidx.benchmark:benchmark-junit4:1.0.0-alpha06 are released. Version 1.0.0-alpha06 contains these commits .
ویژگی های جدید
- Added a check for incorrectly using the old package for the test runner, which now provides a more-helpful error message
API تغییر می کند
- The experimental annotation
ExperimentalAnnotationReportis now correctly public. Usage of the experimental BenchmarkState#report API now requires this annotation
نسخه 1.0.0-alpha05
5 سپتامبر 2019
androidx.benchmark:benchmark-common:1.0.0-alpha05 , androidx.benchmark:benchmark-gradle-plugin:1.0.0-alpha05 , and androidx.benchmark:benchmark-junit4:1.0.0-alpha05 are released. The commits included in this version can be found here .
API تغییر می کند
-
BenchmarkState.reportDataAPI is now marked experimental
رفع اشکال
- Fix for the clock-locking script, which would fail on devices that were either missing the
cutorexprshell utilities. - Fixed an issue with
./gradlew lockClockstask that would hang on devices that were rooted with an older version of the su utility, which did not support the-cflag.
نسخه 1.0.0-alpha04
7 آگوست 2019
androidx.benchmark:benchmark-common:1.0.0-alpha04 , androidx.benchmark:benchmark-gradle-plugin:1.0.0-alpha04 , and androidx.benchmark:benchmark-junit4:1.0.0-alpha04 are released. The commits included in this version can be found here .
New documentation has also been added for how to use the Benchmark library without Gradle, both for usage with different build systems (such as Bazel or Buck), and when running in CI. For more information, see Build benchmarks without Gradle and Run benchmarks in Continuous Integration .
ویژگی های جدید
- Gradle plugin
- Now automatically disables test coverage, and sets the
AndroidBenchmarkRunnerby default ( b/138374050 ) - Added support for new AGP-based data copy, when running benchmarks and when using AGP 3.6+
- Now automatically disables test coverage, and sets the
- JSON format additions
- Output total benchmark test run time ( b/133147694 )
-
@Parameterizedbenchmarks that use a name string (for example@Parameters(name = "size={0},depth={1}")) now output parameter names and values per benchmark in the JSON output ( b/132578772 )
- Dry Run mode ( b/138785848 )
- Added a "dry run" mode for running each benchmark loop only once, to check for errors/crashes without capturing measurements. This can be useful eg for, for example, quickly running benchmarks in presubmit to check that they're not broken.
API تغییر می کند
- Module structure has changed, splitting the library ( b/138451391 )
-
benchmark:benchmark-junit4contains classes with JUnit dependency:AndroidBenchmarkRunner, andBenchmarkRule, both of which have moved into theandroidx.benchmark.junit4package -
benchmark:benchmark-commoncontains the rest of the logic, including the BenchmarkState API - This split will allow the library to support benchmarking without JUnit4 APIs in the future
-
- Configuration warnings are now treated as errors, and will crash the test ( b/137653596 )
- This is done to further encourage accurate measurements, especially in CI
- These errors can be reduced back to warnings with an instrumentation argument. For example:
-e androidx.benchmark.suppressErrors "DEBUGGABLE,LOW_BATTERY"
رفع اشکال
- Errors when writing to external storage on Q devices provide more-descriptive messages, with suggestions of how to resolve the issue
- Screens are automatically turned on during benchmark runs, instead of failing when the screen is off
کمک های خارجی
- Thanks to Sergey Zakharov for contributing JSON output improvements and the fix for screen off issues!
نسخه 1.0.0-alpha03
2 جولای 2019
androidx.benchmark:benchmark:1.0.0-alpha03 and androidx.benchmark:benchmark-gradle-plugin:1.0.0-alpha03 are released. The commits included in this version can be found here .
ویژگی های جدید
- Expose sleep duration due to thermal throttling per benchmark in the full JSON report
رفع اشکال
- The Gradle plugin should no longer be required to be applied after Android plugins and the Android block
- Adds support for benchmark reports on Android 10 devices using scoped storage
نسخه 1.0.0-alpha02
6 ژوئن 2019
androidx.benchmark:1.0.0-alpha02 and androidx.benchmark:benchmark-gradle-plugin:1.0.0-alpha02 are released. The commits included in this version can be found here .
Note that we are treating the JSON schema as an API. We plan to follow the same stability constraints as other APIs: stable (with very rare exceptions) once in beta, and fixed in final release, with only additions in minor releases and changes/removals in major releases.
API تغییر می کند
Overhauled JSON schema. Further changes to the JSON schema are likely to be limited to additions:
- Reorganized the result object structure to support additional metric groups in the future ( b/132713021 )
- Added test run context information, such as device and build info and whether clocks are locked, to the top-level object ( b/132711920 )
- Time metric names now have 'ns' in their name ( b/132714527 )
- Additional stats added per reported metric (maximum, median, minimum), and removed simplified 'nanos' summary stat ( b/132713851 )
Removed XML output ( b/132714414 )
Thermal throttle detection removed from
BenchmarkState.reportDataAPI ( b/132887006 )
رفع اشکال
- Fixed
./gradlew lockClocksnot sticking on some recent OS devices ( b/133424037 ) - Throttling detection disabled for emulator ( b/132880807 )
نسخه 1.0.0-alpha01
7 مه 2019
androidx.benchmark:benchmark:1.0.0-alpha01 is released. The commits included in this version are available here .