معیار
آخرین به روز رسانی | انتشار پایدار | کاندید را آزاد کنید | نسخه بتا | انتشار آلفا |
---|---|---|---|---|
21 آگوست 2024 | 1.3.0 | - | - | - |
اعلام وابستگی ها
برای افزودن وابستگی به بنچمارک، باید مخزن Google Maven را به پروژه خود اضافه کنید. برای اطلاعات بیشتر ، مخزن Maven Google را بخوانید.
ماکرو بنچمارک
برای استفاده از Macrobenchmark در پروژه خود، وابستگی های زیر را به فایل build.gradle
خود برای ماژول macrobenchmark خود اضافه کنید:
شیار
dependencies { androidTestImplementation "androidx.benchmark:benchmark-macro-junit4:1.3.2" }
کاتلین
dependencies { androidTestImplementation("androidx.benchmark:benchmark-macro-junit4:1.3.2") }
میکرو بنچمارک
برای استفاده از Microbenchmark در پروژه خود، وابستگی های زیر را برای ماژول microbenchmark خود به فایل build.gradle
خود اضافه کنید:
شیار
dependencies { androidTestImplementation "androidx.benchmark:benchmark-junit4:1.3.2" } android { ... defaultConfig { ... testInstrumentationRunner "androidx.benchmark.junit4.AndroidBenchmarkRunner" } }
کاتلین
dependencies { androidTestImplementation("androidx.benchmark:benchmark-junit4:1.3.2") } android { ... defaultConfig { ... testInstrumentationRunner = "androidx.benchmark.junit4.AndroidBenchmarkRunner" } }
کتابخانه Microbenchmark همچنین یک پلاگین Gradle را برای استفاده با ماژول microbenchmark ارائه می دهد. این افزونه پیشفرضهای پیکربندی ساخت را برای ماژول تنظیم میکند، نسخه خروجی معیار را برای میزبان تنظیم میکند و وظیفه ./gradlew lockClocks
را ارائه میکند.
برای استفاده از این افزونه، خط زیر را در بلوک «plugins» در فایل build.gradle
سطح بالای خود قرار دهید:
شیار
plugins { id 'androidx.benchmark' version '1.3.2' apply false }
کاتلین
plugins { id("androidx.benchmark") version "1.3.2" apply false }
سپس افزونه را در فایل build.gradle
ماژول بنچمارک خود اعمال کنید
شیار
plugins { id 'androidx.benchmark' }
کاتلین
plugins { id("androidx.benchmark") }
بازخورد
بازخورد شما به بهتر شدن Jetpack کمک می کند. اگر مسائل جدیدی کشف کردید یا ایده هایی برای بهبود این کتابخانه دارید، به ما اطلاع دهید. لطفاً قبل از ایجاد کتابخانه جدید، به مسائل موجود در این کتابخانه نگاهی بیندازید. با کلیک کردن روی دکمه ستاره می توانید رای خود را به یک موضوع موجود اضافه کنید.
برای اطلاعات بیشتر به مستندات ردیاب مشکل مراجعه کنید.
نسخه 1.3
نسخه 1.3.0
21 آگوست 2024
androidx.benchmark:benchmark-*:1.3.0
منتشر شد. نسخه 1.3.0 شامل این commit ها است.
Microbenchmark از 1.2.0 تغییر کرده است
- ردیابی روش بهطور پیشفرض در microbenchmarkها هنگام اجرا در اکثر دستگاهها روشن است
- ردیابی روش به عنوان یک فاز جداگانه، پس از اندازه گیری ها اجرا می شود
- ردیابی روش در برخی از نسخههای پلتفرم و ART بر مراحل اندازهگیری بعدی تأثیر میگذارد - در این نسخهها، ردیابی روش بهطور پیشفرض خاموش است و یک هشدار در خروجی Studio چاپ میشود.
- معیارهای رشته اصلی و ANR
- به منظور جلوگیری از ANR هنگام اجرا برای چند ثانیه،
measureRepeatedOnMainThread
برای معیارهای رشته رابط کاربری (مثلاً آنهایی که با رابطهای کاربری Compose/View تعامل میکنند) اضافه شده است. - اگر انتظار می رود مهلت اجتناب از ANR فراتر رود، ردیابی روش نادیده گرفته می شود. برای غیرفعال کردن این رفتار،
androidx.benchmark.profiling.skipWhenDurationRisksAnr
را روی false تنظیم کنید (برای اجراهای CI توصیه نمی شود).
- به منظور جلوگیری از ANR هنگام اجرا برای چند ثانیه،
- کوچک سازی
- قوانین محافظ تعبیه شده برای بهبود معیارهای میکرو با فعال کردن کوچکسازی
- Minification/R8 در یک ماژول کتابخانه به AGP 8.3 نیاز دارد و می تواند از طریق
android.buildTypes.release.androidTest.enableMinification
درbuild.gradle
شما فعال شود. - API آزمایشی
BlackHole.consume()
برای جلوگیری از حذف کد مرده اضافه شد ( If6812 , b/286091643 )
- معیارها
- ویژگی شمارنده رویداد تجربی cpu (معیارهای مربوط به
perf_event_open
، که در اکثر نسخههای پلتفرم نیاز به روت دارد)، دسترسی از طریقInstrumentationArgument
androidx.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
- پیشنهادات اشکال زدایی برای حذف پیام خرابی پخش سایه زن اضافه شد
- هنگام محک زدن برنامهها بدون
ProfileInstaller
1.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 ) رفع کنید. - اصلاح ویژگی پلاگین
BaselineProfile
gradle برای فعال کردن تولید نمایه پایه و محک زدن هنگام سفارشی کردن نوع ساخت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 حاوی این commit ها است.
رفع اشکال
- رفع
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 حاوی این تعهدات است.
رفع اشکال
- هنگامی که متریک macrobench مقادیر صفر را برای همه تکرارها برمیگرداند، استثنا واضحتری ایجاد کنید ( Iab58f , b/314931695 )
- قوانین راهحل اضافی به قوانین محافظ microbench اضافه شده است، از جمله پشتیبانی از قوانین شنونده و سایر هشدارها / خطاهای مشاهده شده. ( I14d8f , b/329126308 , b/339085669 )
- ردیابی روش به عنوان یک فاز جداگانه در طول یک Macrobenchmark اجرا می شود و دیگر بر اندازه گیری ها تأثیر نمی گذارد. ( If9a50 , b/285912360 , b/336588271 )
- پیشنهادات رفع اشکال اضافی برای حذف پیام خرابی پخش سایه زن اضافه شده است. ( I5efa6 , b/325502725 )
نسخه 1.3.0-alpha04
1 مه 2024
androidx.benchmark:benchmark-*:1.3.0-alpha04
منتشر شد. نسخه 1.3.0-alpha04 حاوی این commit ها است.
تغییرات API
- نسخه آزمایشی
MacrobenchmarkRule#measureRepeated
اضافه شد که یکPerfettoConfig
سفارشی برای ضبط ردیابی Perfetto کاملا سفارشی می گیرد. توجه داشته باشید که پیکربندیهای نادرست ممکن است باعث خرابی کلاسهای متریک داخلی شوند. ( 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 )
- سادهتر کردن ردیابی متد برای یک Macrobenchmark به مدت زمان
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.queryMetrics
را با انواع JSON، textproto و پروتو باینری (کد نشده) اضافه می کند. اینها به شما امکان می دهند معیارهای تعبیه شده در TraceProcessor را جستجو کنید ( I54d7f , b/304038382 ) -
profilerOutput
به خروجی JSON اضافه شد تا ابزار آسانتری در اطراف ردیابیهای پروفایل (به عنوان مثال perfetto، ردیابی روش). ( I05ddd , b/332604449 ) - برچسب پاور به معیار Perfetto Config اضافه شد. این برای مثال، نقاط ردیابی wakelock را می گیرد. ( Icfe44 , b/286551983 )
- آرگومان inst
androidx.benchmark.profiling.skipWhenDurationRisksAnr
اضافه شد، میتوان آن را روی false تنظیم کرد تا از رد شدن ردیابی روش جلوگیری شود، زمانی که مدت زمان مورد انتظار ممکن است باعث ANR شود - اکیداً توصیه میشود در اجرای CI از آن اجتناب شود. - اضافه شد
androidx.benchmark.profiling.perfCompare.enable
برای مثال در ارزیابی سربار ردیابی روش مفید است. ( I61fb4 , b/329146942 )
تغییرات API
-
TraceSectionMetric.Mode
را به کلاس مهر و موم شده تغییر داد تا بسط آینده را بدون شکستن دستورات جامع در زمان فعال کند ( I71f7b ) -
TraceSectionMetric.Mode.Average
و.Count
را اضافه کرد و آرگومانها را دوباره مرتب کرد، بنابراین آرگومان رایجتر (حالت) زودتر در لیست arg قرار داشت و نیاز به تعیین نام پارامترها را کاهش داد. ( Ibf0b0 , b/315830077 , b/322167531 ) - تغییر نام
Metric.getResult
بهgetMeasurements
برای مطابقت با نوع بازگشتی ( I42595 )
رفع اشکال
- برای اطمینان از اینکه وقتی
automaticGenerationDuringBuild
غیرفعال است، معیارها از پروفایلهای پایه تولید شده استفاده میکنند ( Ic144f , b/333024280 ) رفع کنید. - اصلاح ویژگی پلاگین
BaselineProfile
gradle برای فعال کردن تولید نمایه پایه و محک زدن هنگام سفارشی کردن نوع ساختnonMinified
یا معیار. ( Ib8f05 , b/324837887 ) - ردیابی روش ثابت در ماکرو بنچمارک همسطح است، بنابراین ردیابی روش باید کاملاً ثبت و معتبر باشد، حتی در دستگاههای کندتر. ( I6349a , b/329904950 )
- شروع مسدود کردن را در رکورد ردیابی Perfetto فعال کنید تا خطر گم شدن داده ها در ابتدای ردیابی کاهش یابد. فقط در API 33+ پشتیبانی می شود. ( Ie6e41 , b/310760059 )
- هنگامی که از Android Test Orchestrator در ماژولهای بنچمارک استفاده میشود، هشدار اضافه شد، زیرا باعث میشود فایلهای JSON خروجی هر ماژول بهطور مکرر بازنویسی شوند. ( Ia1af6 , b/286899049 )
- مجبور کردن هزاران جداکننده '،' (کاما) برای سازگاری در خروجی استودیو، با نادیده گرفتن منطقه محلی دستگاه ( I3e921 ، b/313496656 )
-
TraceSectionMetric
اکنون از برش های ایجاد شده با استفاده ازTrace.{begin|end}AsyncSection
. ( I91b32 , b/300434906 ) - برچسبهای log.w / استثنا به همه خرابیهای تشخیص راهاندازی اضافه شد. این رفتار فعلی را تغییر نمیدهد (بنابراین برخی از خطاها پرتاب میشوند و برخی دیگر بیصدا راهاندازی را شناسایی نمیکنند)، فقط آن را قابل درکتر میکند. معمولاً مواردی که
Log.w()
و نمیتوانند معیارهای راهاندازی را گزارش کنند، مواردی هستند که رویدادهای غیر فریمی در آنها وجود ندارد، استثناهایی در هنگام شناسایی راهاندازی بهجز اطلاعات زمانبندی فریم (از برشهای UI/RT) ایجاد میشوند. ( Id240f , b/329145809 ) - برای کاهش تداخل، قبل از اجرای Macrobenchmark، کارهای 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 حاوی این commit ها است.
ویژگی های جدید
پشتیبانی آزمایشی R8 در میکروبنچ از طریق قوانین پروگارد تعبیه شده. توجه داشته باشید که این پشتیبانی آزمایشی است و به AGP 8.3 برای کوچک سازی تست های ماژول کتابخانه نیاز دارد. از موارد زیر برای فعال کردن کوچکسازی/بهینهسازی R8 در
build.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
- تغییر نام پارامترهای بولی
MicrobenchmarkConfig
برای جلوگیری از کلمه غیر ضروری "should" ( Ia8f00 , b/303387299 ) -
BenchmarkRule.measureRepeatedOnMainThread
اضافه شد تا معیارهای رشته اصلی (مانند مواردی که Views یا Compose UIs را لمس میکنند) میتوانند از ایجاد ANR جلوگیری کنند، به خصوص در مجموعههای بزرگ در CI. ( I5c86d ) -
FrameTimingGfxInfoMetric
اضافه شد، یک اجرای جایگزین آزمایشیFrameTimingMetric
با اندازهگیریهایی که مستقیماً از پلتفرم میآیند، به جای استخراج از ردیابی Perfetto. ( I457cb , b/322232828 ) - قابلیت حذف نمایه ART را در طول تکرارهای
warmUp
فردی اضافه کنید. ( I17923 ) - چندین تغییر در
TraceSectionMetric
API:- اضافه کردن
Mode.Min
،Mode.Max
- برای لغو نام بخش به عنوان برچسب متریک، آرگومان برچسب را اضافه کنید
- اضافه شدن نام حالت به خروجی برای روشن شدن معنای متریک
- پیشفرض به جمع تغییر کرد، زیرا بیشترین استفاده از این معیار برای رویدادهای مکرر است از این تغییرات در استفاده از CI آگاه باشید، زیرا ممکن است ناپیوستگی ایجاد کند یا تجزیه را خراب کند. ( Ic1e82 , b/301892382 , b/301955938 )
- اضافه کردن
رفع اشکال
- پیام خطای بهبود یافته در پلاگین gradle نمایه پایه زمانی که دستگاه مدیریت شده مشخص شده وجود ندارد ( Idea2b , b/313803289 )
- رفع مشکل افزودن پروفایل های پایه کتابخانه در AAR قبل از AGP 8.3.0-alpha15 ( I1d2af , b/313992099 )
- نشانی وب خروجی نمایه پایه و راهاندازی ثابت در پایان کار ( I802e5 , b/313976958 )
- وقفه های زمانی منبع داده تنظیم شده برای تلاش برای رفع
java.lang.IllegalStateException: Failed to stop [ProcessPid(processName=perfetto, pid=...)]
( I8dc7d , b/323601788 ) - هنگام محک زدن برنامهها بدون
ProfileInstaller
1.3، دو آرگومان ابزار دقیق برای نادیده گرفتن رفتار حذف سایهزن به خرابیهای راهحل اضافه کنید:-
androidx.benchmark.dropShaders.enable=true/false
: میتوان برای رد کردن تمام سایهبانها (از جمله مواردی که در راهاندازیStartupMode.Cold
انجام میشود) استفاده کرد، بهویژه هنگام محک زدن برنامههایی که هنوز از profileinstaller 1.3 استفاده نمیکنند. -
androidx.benchmark.dropShaders.throwOnFailure=true/false
: می تواند برای تحمل شکست در هنگام حذف سایه بان ها، به عنوان مثال هنگام محک زدن برنامه های بدون profileinstaller 1.3 ( I4f573 ) استفاده شود.
-
- زمانی که انتظار میرود بیش از چند ثانیه طول بکشد، از ردیابی روش در رشته رابط کاربری صرفنظر کنید، و هنگام پرتاب از ردیابی روش پاکسازی بگذرید. ( I6e768 )
- برای جلوگیری از خرابی نامشخص در هنگام نوشتن یا پس از پردازش فایل، زمانی که نام فایلها بیش از 200 کاراکتر هستند، آن را پرتاب کنید. ( I4a5ab )
- مشکل جفت شدن فریم های پایان ناپذیر در ابتدا و انتهای ردیابی را برطرف می کند که به اشتباه به عنوان یک فریم بسیار طولانی گزارش می شود. ( I39353 , b/322232828 )
- هنگام نصب مجدد بسته در API 30-33 برای پاک کردن نمایههای ART در ساختهای کاربر، از
--skip verification
در API 30+ استفاده کنید. این به دور زدن هشدارهای Play Protect که باعث خرابی برخی از دستگاهها میشوند، کمک میکند. ( Ic9e36 ) - از
am force-stop
برای از بین بردن برنامهها استفاده کنید، در حالی که یک برنامه سیستمی مانند System UI یا Launcher نیست. ( I5e028 ) - Macrobenchmark اکنون
1 second
منتظر می ماند تا برنامه مورد نظر نمایه ART را شستشو دهد (قبلاً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 حاوی این commit ها است.
رفع اشکال
- تنظیم نشدن srcset نمایه پایه در انواع بنچمارک را برطرف می کند. همچنین
automaticGenerationDuringBuild
در کتابخانهها که وابستگی دایرهای ایجاد میکنند، برطرف میکند. ( I28ab7 , b/333024280 ) - از
am force-stop
برای از بین بردن برنامهها استفاده کنید، در حالی که یک برنامه سیستمی مانند System UI یا Launcher نیست. با این کار، معیارهایStartupMode.COLD
از کار افتادن از "Package $package نباید قبل از شروع سرد اجرا شود!" به دلیل فرآیند کشتن به طور کامل موفق نشد. ( I5e028 )
نسخه 1.2.3
24 ژانویه 2024
androidx.benchmark:benchmark-*:1.2.3
منتشر شد. نسخه 1.2.3 حاوی این commit ها است.
رفع اشکال
- وقتی نسخه AGP 8.3.0 یا بالاتر باشد، استثنا از پلاگین Gradle Profile Baseline حذف شد.
- رفع نمایههای پایه کتابخانه در AAR قبل از AGP 8.3.0-alpha15.
نسخه 1.2.2
1 دسامبر 2023
androidx.benchmark:benchmark-*:1.2.2
منتشر شد. نسخه 1.2.2 حاوی این commit ها است.
پروفایل های پایه
- گزارشهای اجرایی، مسیر فایل خروجی نمایه پایه را بهعنوان یک URI فایل محلی نشان میدهند ( aosp/2843918 ، aosp/2853665 ، b/313976958 )
نسخه 1.2.1
15 نوامبر 2023
androidx.benchmark:benchmark-*:1.2.1
منتشر شد. نسخه 1.2.1 حاوی این commit ها است.
ویژگی های جدید
- پیام خطای بهبود یافته هنگام غیرفعال کردن انواع آزمایشی توسط کاربر ( b/307478189 )
- ویژگی های اضافه شده برای پشتیبانی از یکپارچه سازی اجرای آزمایشی AS ( b/309805233 )، ( b/309116324 )
نسخه 1.2.0
18 اکتبر 2023
androidx.benchmark:benchmark-*:1.2.0
منتشر شد. نسخه 1.2.0 حاوی این commit ها است.
تغییرات مهم از 1.1.0
پروفایل های پایه
- پلاگین Gradle Profile New Baseline، ضبط و گنجاندن نمایههای خط پایه را در جریان کار آزمایشی و ساخت شما بهطور خودکار انجام میدهد.
-
BaselineProfileRule.collect
اکنون پایدار است، یک نسخه ساده و ساده شده از API آزمایشی قبلیBaselineProfileRule.collectBaselineProfile
- فقط
packageName
را مشخص کنید و برنامه خود را هدایت کنید
- فقط
- برای کتابخانههایی که نمایههای خط پایه تولید میکنند، اکنون میتوانید قوانین ایجاد شده را در کد (Argument
BaselineProfileRule.collect
) یا حتی سادهتر در افزونه gradle فیلتر کنید. - رفع می کند
- مجموعه نمایه پایه ثابت در Android U+ ( Id1392 , b/277645214 )
ماکرو بنچمارک
- تالیف
- Macrobenchmark اکنون بهطور کامل وضعیت کامپایل را برای هر کامپایل بازنشانی میکند - برای این کار باید APK را قبل از Android 14 دوباره نصب کنید، بنابراین اگر میخواهید حالت (مانند ورود کاربر) را در آنچه اندازهگیری میشود حفظ کنید، به شدت توصیه میشود که معیار در Android 14+ را نصب کنید.
- همچنین میتوانید با کنترل کامپایل برنامه به طور جداگانه و پرش از کامپایل با
CompilationMode.Ignore()
یا آرگومان ابزار دقیق ، این کار را حل کنید.
استدلال های ابزار دقیق
- پشتیبانی از آرگومان ابزار دقیق
androidx.benchmark.dryRunMode.enable
، (از قبل در microbenchmark موجود است) برای اجرای سریعتر اعتبارسنجی (مانند هنگام ایجاد معیار، یا در ارسال پیشفرض) - پشتیبانی از
androidx.benchmark.profiling.mode=StackSampling
وMethodTracing
. -
androidx.benchmark.enabledRules
اضافه شد تا امکان فیلتر کردن نمایه پایه در زمان اجرا در مقابل آزمایشهای قانون ماکرو بنچمارک را فراهم کند. - آرگومان
androidx.benchmark.perfettoSdkTracing.enable
برای فعال کردن ردیابی با tracing-perfetto اضافه شد، به عنوان مثال نوشتن ردیابی ترکیب مجدد. توجه داشته باشید که وقتی باStartupMode.COLD
استفاده میشود، زمانی که کتابخانه ردیابی در حین راهاندازی برنامه بارگیری و فعال میشود، زمانبندی بهطور چشمگیری تحت تأثیر قرار میگیرد.
- پشتیبانی از آرگومان ابزار دقیق
الزامات
- Macrobenchmark اکنون به
ProfileInstaller
1.3.0 یا بالاتر در برنامه هدف نیاز دارد تا ضبط / تنظیم مجدد نمایه و پاک کردن کش سایه زن را فعال کند.
- Macrobenchmark اکنون به
APIهای آزمایشی متریک جدید
-
TraceSectionMetric
آزمایشی اضافه شد، که امکان استخراج زمانبندی ساده از بلوکهایtrace("") {}
در برنامه شما یا TraceMetric را برای استفاده از قابلیت جستجوی کامل PerfettoTraceProcessor
فراهم میکند. -
PowerMetric
آزمایشی برای گرفتن اطلاعات مصرف انرژی اضافه شد -
MemoryCountersMetric
آزمایشی برای شمارش خطاهای صفحه اضافه شد - API آزمایشی
PerfettoTraceProcessor
اضافه شد که به صورت داخلی برای استخراج معیارها از ردیابیهای سیستم (معروف به ردیابی Perfetto) استفاده میشود.
-
رفع می کند
- رفع خرابیها هنگام نصب یا استخراج نمایهها از یک برنامه نصب شده از چندین APK (مثلاً از بسته برنامه).
-
FrameTimingMetric
ثابت نادیده گرفتن فریمها با شناسههای فریم ناسازگار (معمولاً فریمها در طول موجها در API 31+) ( I747d2 ، b/279088460 ) - رفع خطاهای تجزیه در Traces > 64MB ( Ief831 , b/269949822 )
- هنگامی که تصویر سیستم عامل دستگاه (به ویژه شبیه ساز) برای ردیابی یا کامپایل به درستی پیکربندی نشده است، خطاها روشن می شود.
- رد شدن از بررسی سطح باتری برای دستگاههای بدون باتری (میکرو و ماکرو)
- خروجی فایل بهبود یافته، با خطاهای واضح تر برای فهرست های خروجی نامعتبر، و پیش فرض های امن تر
- بهبود پایداری
StartupMode.COLD
با حذف مداوم کش سایه زن (همچنین از طریقMacrobenchmarkScope.dropShaderCache
در معرض دید قرار می گیرد) - بازگشت بازگشتی برای
startActivityAndWait
رفع شد.
میکرو بنچمارک
- ویژگی ها
- نمایهسازی پس از معیارهای دیگر به فاز جداگانه منتقل شد، بنابراین یک اجرای آزمایشی میتواند نتایج دقیق و زمانبندی دقیق را نمایش دهد.
- APIهای آزمایشی
-
MicrobenchmarkConfig
API آزمایشی برای تعریف معیارهای سفارشی و پیکربندی ردیابی و پروفایل اضافه شد. می توان از آن برای گرفتن ردیابی روش یا گرفتن نقاط ردیابی استفاده کرد (اما مراقب ردیابی سربار باشید). - APIهای آزمایشی برای کنترل
BenchmarkState
جدا ازBenchmarkRule
، بدون JUnit اضافه شد - رکورد آزمایشی
PerfettoTrace
برای فعال کردن ثبت ردیابی Perfetto، با پیکربندی سفارشی، جدا از APIهای معیار اضافه شد.
-
- رفع می کند
- راهحلی که فضاهای خالی اصلی در خروجی معیار Android Studio وجود ندارد.
- مشکل چاپ نشدن هشدارها در خروجی معیار Android Studio را برطرف کنید.
- خرابی
SampledProfiling
در Android 13 (API 33) و بالاتر برطرف شد. - عملکرد
dryRunMode
با رد کردنIsolationActivity
و Perfetto Tracing (در نسخههای قدیمیتر سیستمعامل تا ۱۰ برابر سریعتر حالت اجرا خشکتر) بهشدت بهبود یافته است.
نسخه 1.2.0-rc02
6 اکتبر 2023
androidx.benchmark:benchmark-*:1.2.0-rc02
منتشر شد. نسخه 1.2.0-rc02 حاوی این commit ها است.
رفع اشکال
- خروجی فایل محک را برطرف کنید تا دیگر کپی فایل پلاگین
BaselineProfile
خراب نشود. فایلها تولید و از دستگاه کپی شدند، اما به گونهای تغییر نام داده بودند که افزونه gradle آنها را نبیند. ( I8dbcc , b/303034735 , b/296453339 ) - هنگام تزریق از ماژول ماکرو بنچمارک به برنامه هدف، پیامهای خطای
tracing-perfetto
بارگذاری را روشن کرد.
نسخه 1.2.0-rc01
20 سپتامبر 2023
androidx.benchmark:benchmark-*:1.2.0-rc01
منتشر شد. نسخه 1.2.0-rc01 حاوی این commit ها است.
رفع اشکال
- اکنون یک استثنا (با دستورالعملهای درمان) زمانی که ردیابی SDK Perfetto در یک معیار راهاندازی نمیشود، ایجاد میشود. ( I6c878 , b/286228781 )
- رفع خرابی OOM هنگام تبدیل روش ART trace -> perfetto. ( 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 Baseline اکنون از پلاگین Gradle اندروید 8.3 پشتیبانی می کند. ( aosp/2715214 )
نسخه 1.2.0-beta04
23 آگوست 2023
androidx.benchmark:benchmark-*:1.2.0-beta04
منتشر شد. نسخه 1.2.0-beta04 حاوی این تعهدات است.
ویژگی های جدید
- افزونه Baseline Profiles Gradle اکنون از پلاگین 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.enable
بهperfettoSdkTracing.enable
برای سازگاری با نام مصنوع و سایر مراجع تغییر نام داد.fullTracing.enable
به عنوان یک نسخه بازگشتی به کار خود ادامه خواهد داد. ( I7cc00 ) - نقاط ردیابی داخلی کتابخانه محک (از جمله ردیابی حلقه/فاز میکروبنچمارک) اکنون در نمایشگر ردیابی سیستم استودیو نشان داده میشوند و تحت فرآیند صحیح در Perfetto قرار میگیرند. ( I6b2e7 , b/293510459 )
- خطای ماکرو بنچمارک NOT-PROFILEABLE در API 31+ حذف شد و از بررسی نمایه در دستگاههای ریشهدار eng/userdbug صرفنظر کرد. ( I2abac , b/291722507 )
- هنگام استفاده از Dex Layout Optimizations، قوانین نمایه راه اندازی نیز اکنون به عنوان قوانین نمایه پایه در نظر گرفته می شوند. ( aosp/2684246 , b/293889189 )
نسخه 1.2.0-beta02
26 جولای 2023
androidx.benchmark:benchmark-*:1.2.0-beta02
منتشر شد. نسخه 1.2.0-beta02 حاوی این تعهدات است.
تغییرات API
- APIهای آزمایشی برای معیارها و پیکربندی سفارشی microbench (به عنوان مثال نمایه ساز و ردیابی) اضافه شده است. ( I86101 , b/291820856 )
رفع اشکال
- گزارش خطا در macrobench هنگامی که سیستم عامل برای ردیابی به درستی پیکربندی نشده است، همانطور که اخیراً در شبیه سازهای API 26/28 ARM64 رفع شد. ( I0a328 , b/282191686 )
- جزئیات به شکست بازنشانی کامپایل اضافه شد تا بهروزرسانی شبیهساز پیشنهاد شود، زیرا برخی شبیهسازها اخیراً این مشکل را برطرف کردهاند. ( I8c815 , b/282191686 )
-
androidx.test.uiautomator:uiautomator:2.2.0
را به جای وابستگیimplementation
، یکapi
کنید. ( I1981e )
نسخه 1.2.0-beta01
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 حاوی این commit ها است.
تغییرات API
- API
BaselineProfileRule.collectBaselineProfile()
بهBaselineProfileRule.collect()
تغییر نام داده است. ( I4b665 )
رفع اشکال
- پشتیبانی Macrobenchmark برای
androidx.benchmark.profiling.mode = MethodTracing
. ( I7ad37 , b/285912360 ) - پروفایل Microbenchmark به یک فاز جداگانه منتقل شد، بنابراین بهجای جایگزینی، پس از اندازهگیری به ترتیب انجام میشود. بخشهای ردیابی
MethodTracing
نیز در صورت وجود، اکنون در ردیابی Perfetto ثبت شده گنجانده شدهاند. ( I9f657 , b/285014599 ) - اندازه گیری تعداد را با
Mode.Sum
بهTraceSectionMetric
اضافه کنید. ( IC121a , b/264398606 )
نسخه 1.2.0-alpha15
7 ژوئن 2023
androidx.benchmark:benchmark-*:1.2.0-alpha15
منتشر شد. نسخه 1.2.0-alpha15 حاوی این commit ها است.
ویژگی های جدید
- برای ردیابی استفاده از حافظه از یک برنامه هدف ،
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 ) -
filterPredicate
BaselineProfileRule
یافته به غیر تهی ، با یک مقدار پیش فرض معادل آن به طوری که رفتار فیلتر پیش فرض در اسناد واضح تر است. ( 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 شامل این تعهدات است.
ویژگی های جدید
- در Android 14+ ، Macrobenchmark دیگر به لطف ویژگی جدید پلت فرم ، دیگر برنامه های هدف را برای تنظیم مجدد وضعیت تدوین نصب نمی کند. پیش از این لازم بود که یک دستگاه ریشه دار داشته باشید ، یا مقابله با تمام حالت برنامه (به عنوان مثال ورود کاربر) قبل از اجرای هر معیار حذف شود. ( 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.enabledRules
Arg 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 حاوی این commit ها است.
تغییرات 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 حاوی این commit ها است.
تغییرات 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()
کهsetupBlock
StartupMode.COLD
شده است ، برطرف می کند. اکنونsetupBlock
در تعامل با برنامه ، روند برنامه را اجرا نمی کند و اندازه گیری شروع سرما نامعتبر است. ( i8ebb7 )
نسخه 1.2.0-alpha06
24 اکتبر 2022
androidx.benchmark:benchmark-*:1.2.0-alpha06
منتشر می شود. نسخه 1.2.0-alpha06 حاوی این commit ها است.
تغییرات 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 حاوی این commit ها است.
رفع اشکال
- رفع خرابی قاب در سیستم استودیو ردیابی بیننده برای معیار آثار ضبط شده ( 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 حاوی این commit ها است.
ویژگی های جدید
برای توسعه سریع محلی و اعتبار سنجی اتوماسیون برنامه (به عنوان مثال در presubmit) ، پشتیبانی از
dryRunMode.enable
Argrentation را به 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 حاوی این commit ها است.
ویژگی های جدید
- API های تجربی برای استفاده از
BenchmarkState
به طور مستقل ، جدا ازBenchmarkRule
/JUnit4
اضافه شد. ( id478f ، b/228489614 )
رفع اشکال
- افزود: Leanback Backback برای
startActivityAndWait
. ( 01ed77 ، b/242899915 )
نسخه 1.2.0-alpha02
24 آگوست 2022
androidx.benchmark:benchmark-*:1.2.0-alpha02
منتشر می شود. نسخه 1.2.0-alpha02 حاوی این commit ها است.
تغییرات API
- پیش فرض به
am force stop
برایMacrobenchmarkScope.killProcess()
، حتی اگر ریشه دار باشد ، به جز در طول تولید مشخصات پایه. این می تواند با یک استدلال بولی اختیاری نادیده گرفته شود. ( 02CCE9 ، b/241214097 )
رفع اشکال
- پشتیبانی از تولید مشخصات پایه برای برنامه های سیستم. ( i900b8 ، b/241214097 )
- پشتیبانی از معیارهای قدرت ODPM در دستگاه های بدون استفاده. ( A38C78 ، B/229623230 )
نسخه 1.2.0-alpha01
27 جولای 2022
androidx.benchmark:benchmark-*:1.2.0-alpha01
منتشر می شود. نسخه 1.2.0-alpha01 حاوی این commit ها است.
ویژگی های جدید
- مؤلفه جدید ردیابی-پرفیتو-مشترک اجازه می دهد تا ابزارآلات Perfetto SDK را در برنامه ای که در معرض آن قرار دارد فعال کند ( I2CC7F )
androidx.benchmark.enabledRules
Argertision Argertion برای فعال کردن فیلتر کردن ماکروبنچارک فقط به معیارها ، یا فقط تولید مشخصات پایه. در "macrobenchmark" یا "پایه profile" عبور کنید تا فقط یک نوع تست را اجرا کنید ، به عنوان مثال وقتی فقطBaselineProfiles
روی یک شبیه ساز تولید می کنید. لیست جدا از کاما نیز پشتیبانی می کند. ( i756b7 ، b/230371561 )به عنوان مثال در ساخت Macrobenchmark خود. Gradle:
android { defaultConfig { testInstrumentationRunnerArgument 'androidx.benchmark.enabledRules', 'BaselineProfile' } }
یا از خط فرمان Gradle:
./gradlew macrobenchmark:cC -P android.testInstrumentationRunnerArguments.androidx.benchmark.enabledRules=BaselineProfile
تغییرات API
-
PowerMetric
جدید برای اندازه گیری کارهای انرژی و قدرت در معیارها اضافه شده است. ( i9f39b ، b/220183779 ) - اضافه کردن تنظیم مجدد و تدوین پروفایل ، یک مجموعه جدید
CompilationMode.Ignore
اضافه شده است. ( IBBCF8 ، B/230453509 ) - یک پارامتر جدید به
BaselineProfileRule#collectBaselineProfile
برای فیلتر کردن پرونده خروجی توسط نام های بسته اضافه کرد ( IF7338 ، B/220146561 ) - توسعه دهنده را قادر می سازد دستگاه را برای اندازه گیری تخلیه برق تخلیه کند. ( i6a6cb )
- توانایی پاک کردن حافظه پنهان سایه بان در
MacrobenchmarkScope
را اضافه کرد. ( i32122 ) - توسعه دهنده را قادر می سازد نمایشگر از نوع متریک و دسته بندی های زیر سیستم مورد نظر را پیکربندی کند. ( i810c9 )
- پیش از این در صورت اجرای روی یک دستگاه پشتیبانی نشده ، در معیار پرتاب
UnsupportedOperationException
بود. اکنون UOE فقط در صورت استفاده از متریک در دستگاه پشتیبانی نشده (IE:PowerMetric.configure
) اتفاق می افتد. ( i5cf20 ، b/227229375 ) - برای اندازه گیری قدرت و انرژی کل در هر دسته از سیستم در ماکروبنچرم ها
TotalPowerMetric
وTotalEnergyMetric
اضافه شده است. ( i3b26b ، b/224557371 )
رفع اشکال
- مسئله ای را برطرف کرد که روشهای کامپایل شده به درستی بین هر ماکروبچارک در ساختهای بدون استفاده مجدداً تنظیم نشده بود. این متأسفانه نیاز به نصب مجدد هر تکرار APK دارد ، که داده های کاربردی را برای هر ماکروبنچارک پاک می کند. ( i31c74 ، b/230665435 )
- رفع ردیابی سقوط در API 21/22 ( IF7FD6 ، B/227509388 ، B/227510293 ، B/227512788 )
- تشخیص راه اندازی فعالیت تعمیرات اساسی برای رفع "عدم توانایی خواندن هرگونه معیارها" در ماکروبنومرهای راه اندازی. ( IA517C )
نسخه 1.1.1
نسخه 1.1.1
9 نوامبر 2022
androidx.benchmark:benchmark-*:1.1.1
منتشر می شود. نسخه 1.1.1 حاوی این commit ها است.
رفع اشکال
-
android.system.ErrnoException: open failed: EACCES
که در برخی از دستگاه های Android11 (API 30)+ رخ می دهد. این یک انتخاب گیلاس یک رفع از1.2.0-alpha01
است. ( AOSP/2072249 )
نسخه 1.1.0
نسخه 1.1.0
15 ژوئن 2022
androidx.benchmark:benchmark-*:1.1.0
منتشر می شود. نسخه 1.1.0 حاوی این commit ها است.
- این نسخه با
androidx.benchmark:benchmark-*:1.1.0-rc03
.
تغییرات مهم از 1.0.0
پشتیبانی از Macrobenchmarks Jetpack ، که به شما امکان می دهد تعامل کامل برنامه مانند راه اندازی و پیمایش را اندازه گیری کنید ، امکان ضبط اثرات و اندازه گیری بخش های ردیابی را فراهم می کند.
پشتیبانی از پروفایل های پایه
-
CompilationMode.Partial
برای اندازه گیری اثربخشی پروفایل های پایه. -
@BaselineProfileRule
برای تولید خودکار پروفایل های پایه برای یک سفر مهم کاربر مهم.
-
پشتیبانی از معیارهای تخصیص و پروفایل در طول میکروب مارک.
نسخه 1.1.0-rc03
1 ژوئن 2022
androidx.benchmark:benchmark-*:1.1.0-rc03
منتشر می شود. نسخه 1.1.0-rc03 حاوی این commit ها است.
رفع اشکال
از نصب مجدد بسته هدف در هر تکرار معیار خودداری کنید. ( AOSP/2093027 ، B/231976084 )
تأخیر
300ms
را ازpressHome()
حذف کنید. ( AOSP/2086030 ، B/231322975 )با بهینه سازی دستورات پوسته مورد استفاده در زیر کاپوت ، سرعت تکرار ماکروبنچارک را بهبود بخشید. ( AOSP/2086023 ، B/231323582 )
پشتیبانی از دستگاه های درجه بندی مدیریت شده هنگام تولید پروفایل های پایه با ماکروبچارک ها. ( AOSP/2062228 ، B/228926421 )
نسخه 1.1.0-RC02
11 مه 2022
androidx.benchmark:benchmark-*:1.1.0-rc02
منتشر می شود. نسخه 1.1.0-RC02 شامل این تعهدات است.
- توجه داشته باشید که این نسخه شامل تغییر رفتار است ، زیرا برنامه ها اکنون بین هر معیار کاملاً مجدداً نصب شده اند تا از اندازه گیری های دقیق اطمینان حاصل شود.
رفع اشکال/تغییر رفتار
مسئله ای را برطرف کرد که در آن تدوین برنامه به درستی بین ماکروبچارک ها تنظیم نشده بود و به هیچ وجه در ساختهای بدون تنظیم مجدداً تنظیم نمی شود. این موارد بسیاری از موارد را برطرف می کند که انجام چندین آزمایش باعث می شود که
CompilationMode
با تأثیر کمی در اندازه گیری ها تأثیر بگذارد. برای حل این مشکل ، برنامه هدف اکنون به طور کامل هر روش آزمایش را دوباره نصب می کند ، که داده های کاربردی بین هر ماکروبچارک را پاک می کند. ( i31c74 ، b/230665435 )از آنجا که این امر مانع از تنظیم برنامه ها قبل از آزمایش می شود ، اکنون می توان از تدوین / نصب مجدد استفاده کرد تا کار در این زمینه را فعال کند. به عنوان مثال می توانید هدف را با یک فرمان پوسته
cmd package compile -f -m speed <package>
کاملاً کامپایل کنید ، و سپس مرحله تلفیقی Macrobenchmark را دور بزنید.به عنوان مثال در ساخت Macrobenchmark خود. Gradle:
android { defaultConfig { testInstrumentationRunnerArgument 'androidx.benchmark.compilation.enabled, 'false' } }
یا از خط فرمان Gradle:
./gradlew macrobenchmark:cC -P android.testInstrumentationRunnerArguments.androidx.benchmark.compilation.enabled=false
با افزودن آرگومان ابزار دقیق
androidx.benchmark.enabledRules
، می توان یک ماژول را بین ماکروبنومرم ها و تست های تولید پروفایل پایه به اشتراک گذاشت. در "macrobenchmark" یا "پایه profile" عبور کنید تا فقط یک نوع تست را اجرا کنید ، به عنوان مثال هنگام تولیدBaselineProfiles
روی یک شبیه ساز. ( i756b7 ، b/230371561 )به عنوان مثال در ساخت Macrobenchmark خود. Gradle:
android { defaultConfig { testInstrumentationRunnerArgument 'androidx.benchmark.enabledRules', 'BaselineProfile' } }
یا از خط فرمان Gradle:
./gradlew macrobenchmark:cC -P android.testInstrumentationRunnerArguments.androidx.benchmark.enabledRules=BaselineProfile
نسخه 1.1.0-rc01
20 آوریل 2022
androidx.benchmark:benchmark-*:1.1.0-rc01
منتشر شده است. نسخه 1.1.0-rc01 حاوی این commit ها است.
رفع اشکال
- پیوندهای خروجی پروفایل پایه در Android Studio اکنون از یک نام پرونده منحصر به فرد استفاده کنید. به این ترتیب خروجی همیشه آخرین نتایج استفاده از یک
BaselineProfileRule
را منعکس می کند. ( AOSP/2057008 ، B/228203086 )
نسخه 1.1.0-beta06
6 آوریل 2022
androidx.benchmark:benchmark-*:1.1.0-beta06
منتشر می شود. نسخه 1.1.0-beta06 شامل این تعهدات است.
رفع اشکال
- رفع ردیابی سقوط در API 21/22 ( IF7FD6 ، B/227509388 )
- تشخیص راه اندازی فعالیت تعمیرات اساسی برای رفع "عدم توانایی خواندن هرگونه معیارها" در ماکروبنومرهای راه اندازی. ( IA517C )
- معیارهای راه اندازی را برای ماکروبنچارک ها هنگام استفاده از
CompilationMode.None()
رفع کنید. قبل از این تغییر ،CompilationMode.Partial()
به نظر می رسد کندتر ازCompilation.None()
. ( 611AC9 ).
نسخه 1.1.0-beta05
23 مارس 2022
androidx.benchmark:benchmark-*:1.1.0-beta05
منتشر می شود. نسخه 1.1.0-beta05 شامل این تعهدات است.
رفع اشکال
- بسته را پس از پرش از نصب پروفایل هنگام استفاده از
CompilationMode.None
، بکشید. ( AOSP/1991373 ) - مسئله ای را برطرف کرد که در آن ماکروبچارک ها قادر به جمع آوری معیارهای راه اندازی در هنگام استفاده از
StartupMode.COLD
نیست. ( AOSP/2012227 B/218668335 )
نسخه 1.1.0-beta04
23 فوریه 2022
androidx.benchmark:benchmark-*:1.1.0-beta04
منتشر شده است. نسخه 1.1.0-beta04 حاوی این تعهدات است.
رفع اشکال
معیارهای از دست رفته در Android 10 را برطرف کنید ، و
NoSuchElementException
ناشی از نام های فرآیند که به درستی در آثار ضبط نمی شوند. ( IB4C17 ، B/218668335 )از
PowerManager
برای تشخیص گازهای حرارتی در Q (API 29) و بالاتر استفاده کنید. این به طور قابل توجهی فرکانس مثبت کاذب را در تشخیص گازهای حرارتی (معیار معیار بعد از 90 ثانیه دوم) کاهش می دهد و معیارهای قابل توجهی را در ساخت کاربر سرعت می بخشد. همچنین تشخیص دریچه گاز حتی در صورت قفل شدن ساعتها (اگر آنها برای محیط فیزیکی دستگاه خیلی زیاد قفل شده اند). ( i9c027 ، b/217497678 ، b/131755853 )پروفایل نمونه برداری SimplePerf را فقط برای ساده سازی بازرسی از نخ های
measureRepeated
استفاده کنید ( IC3E12 ، B/217501939 )معیارهای پشتیبانی از زیر فرآیندهای UI نامگذاری شده در برنامه های چند فرآیند ( ICE6C0 ، B/215988434 )
قوانین مشخصات پایه را برای هدف قرار دادن اندروید 9 (SDK 28) فیلتر کنید. AOSP/1980331 B/216508418
نصب پروفایل هنگام استفاده از
Compilation.None()
. علاوه بر این ، هشدارها را هنگام استفاده از نسخه قدیمیandroidx.profileinstaller
و Android Gradle از نسخه قدیمی استفاده کنید. AOSP/1977029
نسخه 1.1.0-beta03
9 فوریه 2022
androidx.benchmark:benchmark-*:1.1.0-beta03
منتشر می شود. نسخه 1.1.0-beta03 حاوی این تعهدات است.
تغییرات API
- اضافه شده
AudioUnderrunMetric
به کتابخانه ماکروبنچارک تحت پرچم آزمایشی برای امکان تشخیص زیرنویس صوتی ( IB5972 ) BaselineProfileRule
دیگر یک بلوکsetup
را نمی پذیرد زیرا این همان عملکردprofileBlock
است. ( IC7DFE ، B/215536447 )برای مثال
@Test fun collectBaselineProfile() { baselineRule.collectBaselineProfile( packageName = PACKAGE_NAME, setupBlock = { startActivityAndWait() }, profileBlock = { // ... } ) }
@Test fun collectBaselineProfile() { baselineRule.collectBaselineProfile( packageName = PACKAGE_NAME, profileBlock = { startActivityAndWait() // ... } ) }
رفع اشکال
- مسئله ثابت که در آن اثرات پروفایل میکروبن در هنگام اتصال در خروجی استودیو ، در اجرای بعدی به روز می شود ( I5AE4D ، B/214917025 )
- جلوگیری از دستورات پوسته گردآوری در API 23 ( ICE380 )
- تغییر نام توسط
FrameCpuTime
->FrameDurationCpu
،FrameUiTime
->FrameDurationUi
برای روشن شدن این موارد ، نه زمانی است ، نه Timestamps ، و برای مطابقت با پیشوندها. ( i0eba3 ، b/216337830 )
نسخه 1.1.0-beta02
26 ژانویه 2022
androidx.benchmark:benchmark-*:1.1.0-beta02
منتشر می شود. نسخه 1.1.0-beta02 حاوی این تعهدات است.
رفع اشکال
- نمونه گیری پشته / روش ردیابی پشته میکروبچارک اکنون در خروجی استودیو ، مشابه سایر خروجی های پروفایل مرتبط است و متریک تخصیص را سرکوب نمی کند. ( IDCB65 ، B/214440748 ، B/214253245 )
- BasineProfilerule اکنون دستور
adb pull
در LogCat و خروجی استودیو برای کشیدن فایل متنی پایه تولید شده چاپ می کند. ( F08811 )
نسخه 1.1.0-beta01
12 ژانویه 2022
androidx.benchmark:benchmark-*:1.1.0-beta01
منتشر شده است. نسخه 1.1.0-beta01 حاوی این تعهدات است.
رفع اشکال
- استدلال پروفایل را برطرف می کند که نادیده گرفته می شود. ( i37373 ، b/210619998 )
- حذف شده
CompliationModes
حذف شده ( I98186 ، B/213467659 ) - مشخصات پایه اصلی ARG از
CompilationMode.Partial
to enum برای وضوح. ( id67ea )
نسخه 1.1.0-alpha13
15 دسامبر 2021
androidx.benchmark:benchmark-*:1.1.0-alpha13
منتشر می شود. نسخه 1.1.0-alpha13 شامل این تعهدات است.
تغییرات API
- ردیابی سیستم کم فشار را به خروجی میکروبن در Android Q (API 29+) اضافه کنید. توجه داشته باشید که این در حال حاضر ردیابی سفارشی (از طریق
android.os.Trace
یاandroidx.tracing
JetPack API) را ضبط نمی کند تا از تأثیرگذاری بر نتایج جلوگیری شود. این ردیابی باید در تشخیص بی ثباتی ، به ویژه از منابع خارج از معیار مفید باشد. ( i298be ، b/205636583 ، b/145598917 ) -
CompilationModes
به سه کلاس روشن کنید - کامل ، هیچ ، جزئی. پیش از این ، آنها به طور متناقض به دلیل استدلال های تلفیقی (که ما اکنون به عنوان جزئیات اجرای آن رفتار می کنیم) و ویژگی ها نامگذاری شده بودند. این امر باعث می شود تجارت ، ترکیبات بالقوه و رفتار در سراسر نسخه های پلتفرم واضح تر شود. ( i3d7bf ، b/207132597 ) - تنظیم و اندازه گیری اکنون به ترتیب همیشه به صورت جفت هستند. اکنون می توانید نام و تکرار بسته را پرس و جو کنید (گرچه تکرار ممکن است در سناریوهای گرمای خاص
null
باشد). ( ID3B68 ، B/208357448 ، B/208369635 )
رفع اشکال
- ثابت
CompilationMode.Speed
None
نسخه 1.1.0-alpha12
17 نوامبر 2021
androidx.benchmark:benchmark-*:1.1.0-alpha12
منتشر می شود. نسخه 1.1.0-alpha12 شامل این تعهدات است.
ویژگی های جدید
- برای اندازه گیری زمان بندی مبتنی بر ردیابی سفارشی ، TracesectionMetrical را اضافه کنید. ( i99db1 ، b/204572664 )
رفع اشکال
- دستگاه بیدار هر تکرار ، برای اطمینان از آزمایش UI - به صفحه قفل نیاز دارد که غیرفعال است. ( IBFA28 ، B/180963442 )
- خرابی های متعدد در حالت پروفایل profsampling در شبیه سازها و دستگاه های غیر ریشه دار ( ICDBDA ، B/202719335 )
- در پایان هر تکرار ، 0.5 ثانیه خواب را برداشته اید - اگر معیارهای از دست رفته را با این تغییر مشاهده کردید ، لطفاً یک اشکال را مطرح کنید. ( iff6aa )
- احتمال کاهش داده های کاهش یافته و پایین آمدن حافظه پایین از ردیابی را کاهش دهید ( ID2544 ، B/199324831 ، B/204448861 )
- با جابجایی به قالب ذخیره سازی برنامه فشرده ، اندازه ردیابی را با 40 ٪ پوند کاهش دهید. ( id5fb6 ، b/199324831 )
- پیاده سازی های به روز شده از معیارهای راه اندازی تا همیشه در پایان RenderThread به پایان می رسد. این امر در نسخه های پلت فرم بیشتر مورد توجه قرار خواهد گرفت و از نزدیک تر به اندازه گیری های درون برنامه ای می پردازیم. ( IC6B55 )
نسخه 1.1.0-alpha11
3 نوامبر 2021
androidx.benchmark:benchmark-*:1.1.0-alpha11
منتشر شده است. نسخه 1.1.0-alpha11 حاوی این commit ها است.
تغییرات API
- Macrobenchmark در حال حاضر دارای
minSdkVersion
23
است. ( IF2655 ) - یک
BaselineProfileRule
آزمایشی جدید را اضافه می کند که قادر به تولید پروفایل های پایه برای سفر مهم کاربر برنامه است. مستندات دقیق برای دنبال کردن. ( ibbefa ، b/203692160 ) - نوع رابط اندازه گیری شده را که برای تماس گیرندگان جاوا اضافه شده است ، حذف می کند ، زیرا این امر باعث ایجاد ابهام در تکمیل/حل روش می شود. تماس گیرندگان جاوا مجدداً نیاز به بازگشت واحد دارند. از طرف MeasurePeated. اگر این یک ناراحتی است ، لطفاً یک اشکال را مطرح کنید ، می توانیم این نسخه را در نسخه آینده بررسی کنیم. ( IFB23E ، B/204331495 )
نسخه 1.1.0-alpha10
27 اکتبر 2021
androidx.benchmark:benchmark-*:1.1.0-alpha10
منتشر می شود. نسخه 1.1.0-alpha10 حاوی این commit ها است.
تغییرات API
- Backport startuptimingmentrical برای بازگشت به API 23. این اجرای جدید همچنین بهتر است که گزارش می دهد () تا زمانی که محتوای مربوطه ارائه شود ، منتظر بمانند. ( IF3AC9 ، B/183129298 )
- اضافه شده JVMoverload به چندین روش MacrobenchmarkScope برای تماس گیرندگان جاوا. ( i644fe ، b/184546459 )
- عملکرد جایگزین macrobenchmarkreule.measurerepeated را ارائه دهید که از یک
Consumer<MacrobenchmarkScope>
برای استفاده ایدیوماتیک در زبان جاوا استفاده می کند. ( IF74AB ، b/184546459 )
رفع اشکال
- برای اثری که به اندازه کافی زود شروع نمی شود ، و داده های متریک را از دست ندهید. انتظار می رود این استثنائات "قادر به خواندن هر معیاری در هنگام معیار" باشد که توسط خود کتابخانه ایجاد شده است. ( i6dfcb ، b/193827052 ، b/200302931 )
- Framenegativeslack برای روشن شدن معنی آن به Frameoverrun تغییر نام داده است - چقدر این قاب در بودجه زمانی خود گذشت. ( i6c2aa ، b/203008701 )
نسخه 1.1.0-alpha09
13 اکتبر 2021
androidx.benchmark:benchmark-*:1.1.0-alpha09
منتشر می شود. نسخه 1.1.0-alpha09 حاوی این commit ها است.
رفع اشکال
- پشتیبانی از حافظه پنهان صفحه هسته بدون ریشه در API 31/S+، که باعث افزایش دقت راه اندازی StartupMode می شود. ( IECFDB ، B/200160030 )
نسخه 1.1.0-alpha08
29 سپتامبر 2021
androidx.benchmark:benchmark-*:1.1.0-alpha08
منتشر می شود. نسخه 1.1.0-alpha08 حاوی این commit ها است.
تغییرات API
- Macrobenchmarks پیمایش را فعال کنید تا به API 23 برگردند ( IF39C2 ، B/183129298 )
- نوع جدیدی از متریک نمونه برداری را به خروجی UI و JSON اضافه کنید ، که بر روی صدک های نمونه های متعدد در هر تکرار متمرکز شده است. ( i56247 ، b/199940612 )
- به معیارهای نقطه شناور در سراسر کتابخانه های معیار (کوتاه در UI استودیو) تغییر دهید. ( i69249 ، b/197008210 )
نسخه 1.1.0-alpha07
1 سپتامبر 2021
androidx.benchmark:benchmark-*:1.1.0-alpha07
منتشر شده است. نسخه 1.1.0-alpha07 حاوی این commit ها است.
تغییرات API
- MIN API را به 21 افزایش داد تا نشان دهنده پایین ترین سطح API در نظر گرفته شده در آینده باشد. MIN API فعلی پشتیبانی شده همچنان از طریق مورد نیاز () منتقل می شود و در حال حاضر 29 ( I440D6 ، B/183129298 ) است
رفع اشکال
-
ProfileInstaller
برطرف می کند تا برنامه ها را با استفاده از پروفایل های پایه برای اجرای ماکروبنومرم ها با استفاده ازCompilationMode.BaselineProfile
آسانتر کند. ( I42657 ، b/196074999 ) توجه: نیاز به به روزرسانی درandroidx.profileinstaller:profileinstaller:1.1.0-alpha04
یا بیشتر. -
StartupMode.COLD
+CompilationMode.None
معیارهای اکنون پایدارتر هستند. ( i770cd ، b/196074999 )
نسخه 1.1.0-alpha06
18 آگوست 2021
androidx.benchmark:benchmark-*:1.1.0-alpha06
منتشر می شود. نسخه 1.1.0-alpha06 حاوی این commit ها است.
تغییرات API
-
androidx.benchmark.iterations
Argrentation Argumentation برای اجازه دادن به تعداد تکرار حساب در هنگام آزمایش/پروفایل در محلی امکان پذیر است. ( 6188be ، b/194137879 )
رفع اشکال
- به SimplePerf به عنوان پروفایل نمونه گیری پیش فرض در API 29+ تغییر یافته است. ( IC4B34 ، B/158303822 )
مسائل شناخته شده
-
CompilationMode.BaselineProfile
اثری در حال انجام است. از استفاده از آن خودداری کنید تا مشخص شود که اکنون یک پروفایل خوب است.
نسخه 1.1.0-alpha05
4 آگوست 2021
androidx.benchmark:benchmark-*:1.1.0-alpha05
منتشر می شود. نسخه 1.1.0-alpha05 حاوی این commit ها است.
1.1.0-alpha04
قبل از انتشار به دلیل تصادف اسپوریک لغو شد. b/193827052
تغییرات API
- SoftRoged StartActivityAndwait برای فراخوانی از طریق
am start
، که باعث کاهش زمان هر تکرار اندازه گیری تقریباً 5 ثانیه می شود ، با هزینه دیگر از بسته های قصد. ( i5a6f5 ، b/192009149
رفع اشکال
- در صورت تشخیص دریچه گاز به طور مکرر ، پرخاشگری تشخیص دریچه گاز حرارتی را کاهش داده و پایه را مجدداً مجدداً تنظیم کنید. ( i7327b )
- FirmetimingMetric را برای کار در Android S Beta ( IB60CC ، B/193260119 ) اصلاح می کند
- برای پشتیبانی بهتر از
CompilationMode.BaselineProfile
، از یکEmptyActivity
استفاده کنید تا برنامه هدف را از یک حالت متوقف شده خارج کنید. ( ID7CAC ، B/192084204 ) - پسوند پرونده ردیابی را به
.perfetto-trace
تغییر داد تا مطابق با استاندارد پلتفرم باشد. ( i4c236 ، b/174663039 ) - StartuptimingMetric اکنون متریک "کاملاً کشیده" را برای اندازه گیری زمان تا زمانی که درخواست شما به پایان نرسد ، وارد می کند. برای تعریف این متریک برای برنامه خود ، با فعالیت تماس بگیرید. در صورت آماده بودن محتوای اولیه شما ، مانند زمانی که موارد لیست اولیه شما از DB یا Network بارگیری می شود ، به صورت گزارش دهی کنید. (روش گزارش دهی در دسترس بدون بررسی نسخه های ساخت در ComponentActivity). توجه داشته باشید که آزمایش شما باید به اندازه کافی طولانی اجرا شود تا متریک را ضبط کند (StartActivityWait منتظر گزارش گزارش نشده است). ( IF1141 ، b/179176560 )
- کاهش هزینه ضمیمه ابرداده UI به اثری از 50+ ms ( IC8390 ، B/193923003 )
- فرکانس رای گیری به شدت افزایش یافته هنگام متوقف کردن ردیابی ، که می تواند به عنوان مثال معیار راه اندازی معیار را 30+٪ کاهش دهد ( IDFBC1 ، B/193723768 )
نسخه 1.1.0-alpha03
16 ژوئن 2021
androidx.benchmark:benchmark-*:1.1.0-alpha03
منتشر می شود. نسخه 1.1.0-alpha03 حاوی این commit ها است.
ویژگی های جدید
- برای پشتیبانی از پروفایل های نصب شده با استفاده از کتابخانه JetPack ProfileInstaller ، یک
CompilationMode.BaselineProfile
جدید مجموعه جدید اضافه شده است. ( AOSP/1720930 )
رفع اشکال
نمونه کد Gradle برای سرکوب خطاهای معیار برای استفاده از یک API غیر محروم با نحوی که از کاربران .gradle.kts نیز پشتیبانی می کند ، به روز شده است.
به عنوان مثال،
testInstrumentationRunnerArguments["androidx.benchmark.suppressErrors"] = "EMULATOR,LOW-BATTERY"
نسخه 1.1.0-alpha02
18 مه 2021
معیار نسخه 1.1.0 -alpha02 یک مؤلفه بزرگ را برای محک و معیار به ارمغان می آورد - macrobenchmark. علاوه بر معیار که به شما امکان می دهد حلقه های CPU را اندازه گیری کنید ، Macrobenchmark به شما امکان می دهد تعامل کامل برنامه مانند راه اندازی و پیمایش را اندازه گیری کنید و اثری را ضبط کنید. برای اطلاعات بیشتر به مستندات کتابخانه مراجعه کنید.
androidx.benchmark:benchmark-*:1.1.0-alpha02
منتشر می شود. نسخه 1.1.0-alpha02 حاوی این commit ها است.
ویژگی های جدید
Artifacts Macrobenchmark اضافه شده است ( androidx.benchmark:benchmark-macro-junit4
و androidx.benchmark:benchmark-macro
)
- CACTURE STARTUP ، MITRICS PERFORMICS PERFORMICS از برنامه خود ، محلی یا CI
- اثری از درون استودیوی اندرویدی را ضبط و بازرسی کنید
رفع اشکال
- مسئله مجوزهای پوسته راه حل با دایرکتوری خروجی در Android 12 (توجه داشته باشید - ممکن است نیاز به به روزرسانی افزونه Android Gradle به 7.0.0 Canary و Android Studio به Arctic Fox (2020.3.1) ، برای ادامه ضبط پرونده های خروجی در دستگاه های آسیب دیده). ( ICB039 )
- ذخیره سازی پشتیبانی از ذخیره سازی در Benchmarkplugin ( 6Be1C1 ، B/159804788 )
- خروجی فایل ساده - به طور پیش فرض ، در دایرکتوری که به
requestLegacyExternalStorage=true
( 8b5a4d ، b/172376362 ) نیاز ندارد - هشدارهای LogCat چاپ کتابخانه را در مورد عدم یافتن موضوع JIT در نسخه های پلتفرم در جایی که موجود نیست ، برطرف می کند. ( i9cc63 ، b/161847393 )
- فرکانس حداکثر دستگاه را بخوانید. ( i55c7a )
نسخه 1.1.0-alpha01
10 ژوئن 2020
androidx.benchmark:benchmark-common:1.1.0-alpha01
، androidx.benchmark:benchmark-gradle-plugin:1.1.0-alpha01
و androidx.benchmark:benchmark-junit4:1.1.0-alpha01
منتشر می شود. نسخه 1.1.0-alpha01 حاوی این commit ها است.
ویژگی های جدید 1.1
- تخصیص متریک - معیارها اکنون پس از گرم شدن و زمان بندی ، یک مرحله اضافی را اجرا می کنند و تعداد تخصیص را ضبط می کنند. تخصیص می تواند باعث ایجاد مشکلات عملکرد در نسخه های قدیمی تر این سکو (140ns در O در M در M شود - در Nexus5x ، با ساعت های قفل شده). این متریک در خروجی کنسول Android Studio و همچنین در
- پشتیبانی از پروفایل - اکنون می توانید داده های پروفایل را برای یک معیار ضبط ضبط کنید ، تا بررسی کنید که چرا کد شما به آرامی کار می کند. معیار از ضبط هر دو روش ردیابی یا نمونه گیری روش از هنر پشتیبانی می کند. این پرونده ها را می توان با استفاده از Profiler Inside Android Studio با استفاده از File> Open بازرسی کرد.
- افزونه معیار Gradle اکنون پیش فرض هایی را برای تنظیم ساده تر ارائه می دهد:
-
testBuildType
به طور پیش فرض تنظیم شده است تا از استفاده از وابستگی با پوشش کد داخلی جلوگیری شود. نسخه BuildType همچنین به عنوان پیش فرض BuildType پیکربندی شده است ، که به Android Studio اجازه می دهد تا هنگام باز کردن یک پروژه برای اولین بار به طور خودکار نوع ساخت درست را انتخاب کند. ( b/138808399 ) -
signingConfig.debug
به عنوان پیکربندی پیش فرض امضای ( B/153583269 ) استفاده می شود
-
** رفع اشکال **
- به طور قابل توجهی انتقال گرمای گرم را کاهش می دهد ، جایی که اولین اندازه گیری برای هر معیار از نظر مصنوعی بالاتر از سایرین بود. این مسئله در معیارهای بسیار کوچک (1 میکرو ثانیه یا کمتر) برجسته تر بود. ( b/142058671 )
- خطای ثابت
InstrumentationResultParser
چاپ شده برای هر معیار هنگام اجرای از خط فرمان. ( i64988 ، b/154248456 )
مسائل شناخته شده
- خط فرمان ، دعوت های Gradle از معیار به طور مستقیم نتایج را چاپ نمی کنند. شما می توانید با دویدن از طریق استودیو ، یا تجزیه پرونده خروجی JSON برای نتایج ، در این زمینه کار کنید.
- گزارش معیار نتواند گزارش را از دستگاه هایی که یک برنامه نصب شده با برنامه ApplicationID با "Android" یا "بارگیری" (بی حساسیت "پایان داده اند ، بیرون بکشد. کاربرانی که به این مسئله ضربه می زنند باید افزونه Android Gradle را به 4.2-alpha01 یا بالاتر ارتقا دهند.
نسخه 1.0.0
معیار نسخه 1.0.0
20 نوامبر 2019
androidx.benchmark:benchmark-common:1.0.0
، androidx.benchmark:benchmark-gradle-plugin:1.0.0
و androidx.benchmark:benchmark-junit4:1.0.0
بدون تغییر از 1.0.0-rc01 منتشر می شود. نسخه 1.0.0 شامل این تعهدات است .
ویژگی های اصلی 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-lint
dependency, 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
additionalTestOutputDir
instrumentation 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
ExperimentalAnnotationReport
is 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.reportData
API is now marked experimental
رفع اشکال
- Fix for the clock-locking script, which would fail on devices that were either missing the
cut
orexpr
shell utilities. - Fixed an issue with
./gradlew lockClocks
task that would hang on devices that were rooted with an older version of the su utility, which did not support the-c
flag.
نسخه 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
AndroidBenchmarkRunner
by 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 )
-
@Parameterized
benchmarks 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-junit4
contains classes with JUnit dependency:AndroidBenchmarkRunner
, andBenchmarkRule
, both of which have moved into theandroidx.benchmark.junit4
package -
benchmark:benchmark-common
contains 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
External contributions
- 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.reportData
API ( b/132887006 )
رفع اشکال
- Fixed
./gradlew lockClocks
not 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 .
معیار
آخرین به روز رسانی | انتشار پایدار | کاندید را آزاد کنید | نسخه بتا | انتشار آلفا |
---|---|---|---|---|
21 آگوست 2024 | 1.3.0 | - | - | - |
اعلام وابستگی ها
To add a dependency on Benchmark, you must add the Google Maven repository to your project. برای اطلاعات بیشتر ، مخزن Maven Google را بخوانید.
Macrobenchmark
To use Macrobenchmark in your project, add the following dependencies to your build.gradle
file for your macrobenchmark module :
شیار
dependencies { androidTestImplementation "androidx.benchmark:benchmark-macro-junit4:1.3.2" }
کاتلین
dependencies { androidTestImplementation("androidx.benchmark:benchmark-macro-junit4:1.3.2") }
Microbenchmark
To use Microbenchmark in your project, add the following dependencies to your build.gradle
file for your microbenchmark module :
شیار
dependencies { androidTestImplementation "androidx.benchmark:benchmark-junit4:1.3.2" } android { ... defaultConfig { ... testInstrumentationRunner "androidx.benchmark.junit4.AndroidBenchmarkRunner" } }
کاتلین
dependencies { androidTestImplementation("androidx.benchmark:benchmark-junit4:1.3.2") } android { ... defaultConfig { ... testInstrumentationRunner = "androidx.benchmark.junit4.AndroidBenchmarkRunner" } }
کتابخانه Microbenchmark همچنین یک پلاگین Gradle را برای استفاده با ماژول microbenchmark ارائه می دهد. این افزونه پیشفرضهای پیکربندی ساخت را برای ماژول تنظیم میکند، نسخه خروجی معیار را برای میزبان تنظیم میکند و وظیفه ./gradlew lockClocks
را ارائه میکند.
برای استفاده از این افزونه، خط زیر را در بلوک «plugins» در فایل build.gradle
سطح بالای خود قرار دهید:
شیار
plugins { id 'androidx.benchmark' version '1.3.2' apply false }
کاتلین
plugins { id("androidx.benchmark") version "1.3.2" apply false }
سپس افزونه را در فایل build.gradle
ماژول بنچمارک خود اعمال کنید
شیار
plugins { id 'androidx.benchmark' }
کاتلین
plugins { id("androidx.benchmark") }
بازخورد
بازخورد شما به بهتر شدن Jetpack کمک می کند. اگر مسائل جدیدی کشف کردید یا ایده هایی برای بهبود این کتابخانه دارید، به ما اطلاع دهید. لطفاً قبل از ایجاد کتابخانه جدید، به مسائل موجود در این کتابخانه نگاهی بیندازید. با کلیک کردن روی دکمه ستاره می توانید رای خود را به یک موضوع موجود اضافه کنید.
برای اطلاعات بیشتر به مستندات ردیاب مشکل مراجعه کنید.
نسخه 1.3
نسخه 1.3.0
21 آگوست 2024
androidx.benchmark:benchmark-*:1.3.0
is released. Version 1.3.0 contains these commits .
Microbenchmark changes since 1.2.0
- Method tracing is on by default in microbenchmarks when running on most devices
- Method tracing runs as a separate phase, after measurements
- Method tracing on some platform and ART versions will affect later measurement phases - on these versions, method tracing is off by default and a warning is printed to Studio output
- Main thread benchmarks and ANRs
- Added
measureRepeatedOnMainThread
for UI thread benchmarks (eg those that interact with Compose/View UIs) to avoid ANRs when running for many seconds. - Method traces are skipped if expected to overrun the ANR avoidance deadline. Set
androidx.benchmark.profiling.skipWhenDurationRisksAnr
to false to disable this behavior (not recommended for CI runs).
- Added
- کوچک سازی
- Embedded proguard rules to improve microbenchmarking with minification enabled
- Minification/R8 in a library module requires AGP 8.3, and can be enabled via
android.buildTypes.release.androidTest.enableMinification
in yourbuild.gradle
- Added experimental
BlackHole.consume()
API to prevent dead code elimination ( If6812 , b/286091643 )
- معیارها
- Experimental cpu event counter feature (metrics from
perf_event_open
, which requires root on most versions of the platform), access viaInstrumentationArgument
androidx.benchmark.cpuEventCounter.enable
(can be set totrue
), andandroidx.benchmark.cpuEventCounter.events
can be set eg to (Instructions,CpuCycles
). This should be supported on some userdebug emulators, but support has not been tested across
- Experimental cpu event counter feature (metrics from
MACRObenchmark changes since 1.2.0
- Method tracing overhaul for macrobenchmarks.
- Now method traces are scoped to the duration of the
measureBlock
, and can capture multiple sessions if the process starts multiple times. - Previously, method tracing would only work for
StartupMode.COLD
benchmarks, and capture nothing formeasureBlocks
that didn't restart the target process - Fixed method traces flush in macrobenchmark, so that method traces should be fully captured and valid, even on slower devices. ( I6349a , b/329904950 )
- Now method traces are scoped to the duration of the
- Correctly dump ART profile during individual
warmUp
iterations when process is killed soCompilationMode.Partial(warmup=N)
measurements are more accurate. ( I17923 ) - Drop Shader broadcast failure message
- Added debugging suggestions to drop shader broadcast failure message
- Add two instrumentation arguments for overriding shader dropping behavior to workaround crashes when benchmarking apps without
ProfileInstaller
1.3:-
androidx.benchmark.dropShaders.enable=true/false
: can be used to skip all shader dropping (including that done inStartupMode.Cold
launches), esp when benchmarking apps that don't yet use profileinstaller 1.3 -
androidx.benchmark.dropShaders.throwOnFailure=true/false
: can be used to tolerate failures when trying to drop shaders, for example when benchmarking apps without profileinstaller 1.3 ( I4f573 )
-
- Added experimental
MacrobenchmarkRule#measureRepeated
variant which takes a customPerfettoConfig
for fully customized Perfetto trace recording. Note that incorrectly configured configs may cause built in Metric classes to fail. ( Idfd3d , b/309841164 , b/304038384 ) - Cancel background dexopt jobs before running a Macrobenchmark to reduce interference. ( I989ed )
- Macrobenchmark now waits for 1 second for the target application to flush an ART profile (previously it waited for 500 ms). ( I85a50 , b/316082056 )
- TraceSectionMetric overhaul
- Note :
TraceSectionMetric
changes below can affect outputs in CI usage, and may create discontinuities, or break parsing - Sum is now the default, as most usage of this metric is for repeated events, and first would discard data in these cases
- Changed to be more customizable, with more available modes
- Mode names are now embedded in metric output name (in Studio and JSON)
- Now supports slices created using
Trace.{begin|end}AsyncSection
.
- Note :
- معیارها
- Power - Added
PowerMetric.deviceSupportsHighPrecisionTracking
,PowerMetric.deviceBatteryHasMinimumCharge()
andPowerMetric.deviceSupportsPowerEnergy()
- Renamed
Metric.getResult
togetMeasurements
to match return type - Added log.w / exception labels to all startup detection failures. This does not change current behavior (so some errors throw, and others silently fail to detect the startup), just makes it more understandable. Generally the ones that
Log.w()
and fail to report startup metrics are those where non-frame events are missing, exceptions are thrown when startup is detected except for frame timing information (from UI/RT slices). ( Id240f , b/329145809 ) - Added
frameCount
measurement toFrameTimingMetric
to aid in discovery of scenarios where measurements change because the number of frames produced changed (new animations added, invalidation issues fixed). ( I1e5aa ) - Clarified that
frameOverrunMs
is the preferred metric for tracking when available in docs, and why. ( I18749 , b/329478323 ) - Fixes issue where unterminated frames at the beginning and end of the trace could be paired together, which would incorrectly report as a single extremely long frame. ( I39353 , b/322232828 )
- Improve
FrameTimingMetric
error when frames aren't produced, and always output link to trace when failing metric parsing to assist in diagnosing problem. ( I956b9 ) - Fixed crash in
FrameTimingMetric
failing to parse frame id, especially on certain OEM devices. ( Ia24bc , b/303823815 , b/306235276 ) - Relaxed strictness of checks in
FrameMetrics
, and added more detail to error messages. ( Iadede )
- Power - Added
Baseline Profile capture / Gradle plugin changes since 1.2.0
- Increased max recommended version of AGP to 9.0.0-alpha01.
- Ensure
mergeArtProfile
andmergeStartupProfile
tasks always wait for baseline profile generation. ( I623d6 , b/343086054 ) - Generating a baseline profile successfully will output a summary of what changed ( I824c8 , b/269484510 )
- Added DSL to disable warnings ( Ic4deb , b/331237001 )
- Fix to ensure benchmarks use generated baseline profiles when
automaticGenerationDuringBuild
is off ( Ic144f , b/333024280 ) - Fix
BaselineProfile
gradle plugin property overrides to enable baseline profile generation and benchmarking when customizing anonMinified
or benchmark build type. ( Ib8f05 , b/324837887 ) - Fix for including library baseline profiles in AAR prior to AGP 8.3.0-alpha15. ( I1d2af , b/313992099 )
- Fixed baseline and startup profile output url at the end of generation task. ( I802e5 , b/313976958 )
Other significant changes since 1.2.0
- Trace capture
- Reduced EXITCODE 2 error when starting perfetto from an error to logged warning
- Enable AIDL tracing by default in benchmarks(requires API 28) ( Ia0af2 , b/341852305 )
- Enable porter tag tracing by default in benchmarks. This captures, for example, wakelock tracepoints. ( Icfe44 , b/286551983 )
- Increased trace capture start timeout to avoid crashes when starting tracing on slower devices ( I98841 , b/329145808 )
- Added public API
PerfettoTraceProcessor.Session.queryMetrics
APIs with JSON, textproto, and proto binary (undecoded) variants. These allow you to query metrics built intoTraceProcessor
( I54d7f , b/304038382 ) - Enable blocking start on Perfetto trace record to reduce risk of missing data at beginning of trace. Only supported on API 33+. ( Ie6e41 , b/310760059 )
- JSON output
- Added additional information in benchmark context in JSON output:
-
context.artMainlineVersion
- integer version of Art mainline module (if present on device,-1
otherwise) -
context.build.id
- Equals android.os.Build.ID -
context.build.version.codename
- Equals android.os.Build.VERSION.CODENAME -
context.build.version.abbreviatedCodename
- corresponds to first letter of pre-release codename (including on release builds) ( Ie5020 )
-
- Added
profilerOutput
list to JSON output for easier tooling around profiling traces (eg Perfetto, Method traces) ( I05ddd , b/332604449 ) - Added a warning when Android Test Orchestrator is used in benchmark modules, as this will cause per-module output JSON files to be repeatedly overwritten. ( Ia1af6 , b/286899049 )
- Throw when filenames are longer than 200 chars to avoid unclear crashes when writing or post-processing files. ( I4a5ab )
- Added additional information in benchmark context in JSON output:
نسخه 1.3.0-rc01
7 آگوست 2024
androidx.benchmark:benchmark-*:1.3.0-rc01
is released. Version 1.3.0-rc01 contains these commits .
رفع اشکال
- Fix
androidx.benchmark.cpuEventCounter
producing corrupt values for non-Instruction events ( I7386a , b/286306579 ) - Fix
resumeTiming
/runWithTimingDisabled
to respect metric priority order, and significantly reduce impact of lower priority metric pause/resume on higher priority metric results. For example, if using cpu perf counters viacpuEventCounter.enable
instrumentation argument, timeNs is no longer significantly reduced when pause/resume occur. ( I39c2e , b/286306579 , b/307445225 ) - Reduced chance of stack sampling causing
measureRepeatedOnMainThread
from hitting main thread hard timeout by moving stack sampling conversion off main thread. ( I487a8 , b/342237318 ) - Removed manual outlining of access to new platform APIs since this happens automatically via API modeling when using R8 with AGP 7.3 or later (eg R8 version 3.3) and for all builds when using AGP 8.1 or later (eg D8 version 8.1). Clients who are not using AGP are advised to update to D8 version 8.1 or later. برای جزئیات بیشتر به این مقاله مراجعه کنید. ( I9496c , b/345472586 )
- Added agp version check to send package name as instr arg. Previous to AGP 8.4.0 the target app package name cannot be send to the instrumentation app via instrumentation arguments. ( 0c72a3f )
نسخه 1.3.0-beta02
10 جولای 2024
androidx.benchmark:benchmark-*:1.3.0-beta02
is released. Version 1.3.0-beta02 contains these commits .
رفع اشکال
- Gracefully handle EXITCODE
2
when starting Perfetto to log a warning, but proceed.
نسخه 1.3.0-beta01
12 ژوئن 2024
androidx.benchmark:benchmark-*:1.3.0-beta01
is released. Version 1.3.0-beta01 contains these commits .
تغییرات API
- Renamed
MethodTracing.affectsMeasurementOnThisDevice
toAFFECTS_MEASUREMENT_ON_THIS_DEVICE
for consistency. ( I1bdfa ) - Added experimental
BlackHole.consume()
api to prevent dead code elimination in microbenchmarks. ( If6812 , b/286091643 ) - Microbenchmark will now correctly throw to prevent method tracing from interfering with measurements. This occurs on certain devices when method tracing is forced on (via instrumentation args or
MicrobenchmarkConfig
), and if a measurement is attempted after a method trace. Affected devices are running API 26-30 or certain ART mainline module versions affected by this interference, and can be detected at runtime viaProfilerConfig.MethodTracing.affectsMeasurementOnThisDevice
. ( Iafb92 , b/303660864 )
رفع اشکال
- Bumped max agp version recommended to 9.0.0-alpha01. ( I5bbb0 )
- Added compilation mode to benchmark context ( If5612 , b/325512900 )
- Enable AIDL tracing by default (requires API 28) ( Ia0af2 , b/341852305 )
- Added additional information in benchmark context in JSON output:
-
context.artMainlineVersion
- integer version of Art mainline module (if present on device, -1 otherwise) -
context.build.id
- Equalsandroid.os.Build.ID
-
context.build.version.codename
- Equalsandroid.os.Build.VERSION.CODENAME
-
context.build.version.abbreviatedCodename
- corresponds to first letter of pre-release codename (even on release builds) ( Ie5020 )
-
- Fixes
StackSampling
to respectandroidx.benchmark.profiling.sampleDurationSeconds
( Ib1d53 ) - Change macro->common dependency to be
api()
, so it's easier to use egPerfettoTrace
andPerfettoConfig
. ( Icdae3 , b/341851833 ) - Ensure
mergeArtProfile
andmergeStartupProfile
tasks always wait for baseline profile generation. ( I623d6 , b/343086054 ) - Consider variant enable state when deciding whether variant should be enabled. ( I5d19e , b/343249144 )
- Increased default start timeout for perfetto trace processor. ( I87e8c , b/329145808 )
Version 1.3.0-alpha05
14 مه 2024
androidx.benchmark:benchmark-*:1.3.0-alpha05
is released. Version 1.3.0-alpha05 contains these commits .
رفع اشکال
- Throw clearer exception when macrobench metric returns zero values for all iterations ( Iab58f , b/314931695 )
- Additional workaround rules added to microbench proguard rules, including support for listener rules and other observed warnings / errors. ( I14d8f , b/329126308 , b/339085669 )
- Method tracing runs as a separate phase during a Macrobenchmark, and it no longer affects measurements. ( If9a50 , b/285912360 , b/336588271 )
- Added extra debugging suggestions to drop shader broadcast failure message. ( I5efa6 , b/325502725 )
Version 1.3.0-alpha04
1 مه 2024
androidx.benchmark:benchmark-*:1.3.0-alpha04
is released. Version 1.3.0-alpha04 contains these commits .
تغییرات API
- Added experimental
MacrobenchmarkRule#measureRepeated
variant which takes a customPerfettoConfig
for fully customized Perfetto trace recording. Note that incorrectly configured configs may cause built in Metric classes to fail. ( Idfd3d , b/309841164 , b/304038384 ) - Rename
PowerMetric.deviceSupportsPowerEnergy
toPowerMetric.deviceSupportsHighPrecisionTracking
for clarity ( I5b82f ) - Added
PowerMetric.deviceBatteryHasMinimumCharge()
andPowerMetric.deviceSupportsPowerEnergy()
to enable changing or skipping benchmarks based on device power measurement capability. ( I6a591 , b/322121218 )
رفع اشکال
- Added comparison with previous baseline profile ( I824c8 , b/269484510 )
- Added DSL to disable warnings ( Ic4deb , b/331237001 )
- Changed exception to info log when benchmark variants are disabled ( I8a517 , b/332772491 )
- Make it simpler to capture method traces for a Macrobenchmark is scoped to the duration of the actual
measureBlock()
. Previously, it started at target process launch and only supported cold starts ( Iee85a , b/300651094 ) - Avoid crashing when perfetto trace processor is slow to start ( I98841 , b/329145808 )
نسخه 1.3.0-alpha03
17 آوریل 2024
androidx.benchmark:benchmark-*:1.3.0-alpha03
is released. Version 1.3.0-alpha03 contains these commits .
ویژگی های جدید
- Adds public API
PerfettoTraceProcessor.Session.queryMetrics
APIs with JSON, textproto, and proto binary (undecoded) variants. These allow you to query metrics built into TraceProcessor ( I54d7f , b/304038382 ) - Added
profilerOutput
to JSON output for easier tooling around profiling traces (eg perfetto, method traces). ( I05ddd , b/332604449 ) - Added power tag to benchmark Perfetto Config. This captures, for example, wakelock tracepoints. ( Icfe44 , b/286551983 )
- Added inst argument
androidx.benchmark.profiling.skipWhenDurationRisksAnr
, can be set to false to avoid skipping method traces when expected duration may cause an ANR - strongly recommended to avoid in CI runs. - Added experimental inst argument
androidx.benchmark.profiling.perfCompare.enable
, set this to true to run comparison timing between measurement and profiling phases. Useful in eg evaluating overhead of method tracing. ( I61fb4 , b/329146942 )
تغییرات API
- Changed
TraceSectionMetric.Mode
to sealed class to enable future expansion without breaking exhaustive when statements ( I71f7b ) - Added
TraceSectionMetric.Mode.Average
and.Count
, and reordered args so the more common argument (mode) was earlier in the arg list, reducing need for specifying parameter names. ( Ibf0b0 , b/315830077 , b/322167531 ) - Renamed
Metric.getResult
togetMeasurements
to match return type ( I42595 )
رفع اشکال
- Fix to ensure benchmarks use generated baseline profiles when
automaticGenerationDuringBuild
is off ( Ic144f , b/333024280 ) - Fix
BaselineProfile
gradle plugin property overrides to enable baseline profile generation and benchmarking when customizing anonMinified
or benchmark build type. ( Ib8f05 , b/324837887 ) - Fixed method traces flush in macrobenchmark, so that method traces should be fully captured and valid, even on slower devices. ( I6349a , b/329904950 )
- Enable blocking start on Perfetto trace record to reduce risk of missing data at beginning of trace. Only supported on API 33+. ( Ie6e41 , b/310760059 )
- Added a warning when Android Test Orchestrator is used in benchmark modules, as this will cause per-module output JSON files to be repeatedly overwritten. ( Ia1af6 , b/286899049 )
- Force ',' (comma) thousands separators for consistency in Studio output, ignoring device locale ( I3e921 , b/313496656 )
-
TraceSectionMetric
now supports slices created usingTrace.{begin|end}AsyncSection
. ( I91b32 , b/300434906 ) - Added log.w / exception labels to all startup detection failures. This does not change current behavior (so some errors throw, and others silently fail to detect the startup), just makes it more understandable. Generally the ones that
Log.w()
and fail to report startup metrics are those where non-frame events are missing, exceptions are thrown when startup is detected except for frame timing information (from UI/RT slices). ( Id240f , b/329145809 ) - Cancel background dexopt jobs before running a Macrobenchmark to reduce interference. ( I989ed )
- Added
frameCount
measurement toFrameTimingMetric
to aid in discovery of scenarios where measurements change because the number of frames produced changed (new animations added, invalidation issues fixed). ( I1e5aa ) - Clarified that
frameOverrunMs
is the preferred metric for tracking when available in docs, and why. ( I18749 , b/329478323 )
نسخه 1.3.0-alpha02
20 مارس 2024
androidx.benchmark:benchmark-*:1.3.0-alpha02
is released. Version 1.3.0-alpha02 contains these commits .
ویژگی های جدید
Experimental R8 support in microbench via embedded proguard rules. Note that this support is experimental, and requires AGP 8.3 for minification of library module tests. Use the following to enable R8 minification/optimization in your benchmark module's
build.gradle
, which should lead to a significant performance increase, depending on workload. ( I738a3 , b/184378053 )android { buildTypes.release.androidTest.enableMinification = true }
رفع اشکال
- Fixes method tracing warning to be on separate line from microbench output. ( I0455c , b/328308833 )
نسخه 1.3.0-alpha01
21 فوریه 2024
androidx.benchmark:benchmark-*:1.3.0-alpha01
is released. نسخه 1.3.0-alpha01 حاوی این commit ها است.
تغییرات API
- Renamed
MicrobenchmarkConfig
boolean parameters to avoid unnecessary word 'should' ( Ia8f00 , b/303387299 ) - Added
BenchmarkRule.measureRepeatedOnMainThread
so main thread benchmarks (eg ones touching Views or Compose UIs) can avoid triggering ANRs, especially during large suites in CI. ( I5c86d ) - Added
FrameTimingGfxInfoMetric
, an experimental alternate implementation ofFrameTimingMetric
with measurements coming directly from the platform, rather than extracted from the Perfetto trace. ( I457cb , b/322232828 ) - Add the ability to dump an ART profile during individual
warmUp
iterations. ( I17923 ) - Several changes to
TraceSectionMetric
API:- Add
Mode.Min
,Mode.Max
- Add label argument to override section name as metric label
- Added mode name to output to clarify metric meaning
- Changed default to sum, as most usage of this metric is for repeated events Be aware of this changes in CI usage, as it may create discontinuities or break parsing. ( Ic1e82 , b/301892382 , b/301955938 )
- Add
رفع اشکال
- Improved error message in baseline profile gradle plugin when specified managed device does not exist ( Idea2b , b/313803289 )
- Fix for including library baseline profiles in AAR prior to AGP 8.3.0-alpha15 ( I1d2af , b/313992099 )
- Fixed baseline and startup profile output url at the end of generation task ( I802e5 , b/313976958 )
- Adjusted data source timeouts to attempt to fix
java.lang.IllegalStateException: Failed to stop [ProcessPid(processName=perfetto, pid=...)]
( I8dc7d , b/323601788 ) - Add two instrumentation arguments for overriding shader dropping behavior to workaround crashes when benchmarking apps without
ProfileInstaller
1.3:-
androidx.benchmark.dropShaders.enable=true/false
: can be used to skip all shader dropping (including that done inStartupMode.Cold
launches), esp when benchmarking apps that don't yet use profileinstaller 1.3 -
androidx.benchmark.dropShaders.throwOnFailure=true/false
: can be used to tolerate failures when trying to drop shaders, for example when benchmarking apps without profileinstaller 1.3 ( I4f573 )
-
- Skip method tracing on UI thread when expected to take longer than a few seconds, and cleanup method traces when throwing. ( I6e768 )
- Throw when filenames are longer than 200 chars to avoid unclear crashes when writing or post-processing files. ( I4a5ab )
- Fixes issue where unterminated frames at the beginning and end of the trace could be paired together, which would incorrectly report as a single extremely long frame. ( I39353 , b/322232828 )
- Use
--skip verification
on API 30+ when reinstalling a package on API 30-33 to clear ART profiles on user builds. This helps bypass Play Protect warnings that cause failures on some class of devices. ( Ic9e36 ) - Use
am force-stop
to kill apps when not a system app like System UI or Launcher. ( I5e028 ) - Macrobenchmark now waits for
1 second
for the target application to flush an ART profile (previously it waited for500 ms
). ( I85a50 , b/316082056 ) - Improve
FrameTimingMetric
error when frames aren't produced, and always output link to trace when failing metric parsing to assist in diagnosing problem. ( I956b9 ) - Fixed crash in
FrameTimingMetric
failing to parse frame id, especially on certain OEM devices. ( Ia24bc , b/303823815 , b/306235276 ) - Relaxed strictness of checks in
FrameMetrics
, and added more detail to error messages. ( Iadede )
نسخه 1.2
Version 1.2.4
17 آوریل 2024
androidx.benchmark:benchmark-*:1.2.4
is released. Version 1.2.4 contains these commits .
رفع اشکال
- Fixes baseline profile srcset not being set up in benchmark variants. Also fixes
automaticGenerationDuringBuild
in libraries causing a circular dependency. ( I28ab7 , b/333024280 ) - Use
am force-stop
to kill apps when not a system app like System UI or Launcher. This fixesStartupMode.COLD
benchmarks crashing from "Package $package must not be running prior to cold start!" due to process kill not fully succeeding. ( I5e028 )
Version 1.2.3
24 ژانویه 2024
androidx.benchmark:benchmark-*:1.2.3
is released. Version 1.2.3 contains these commits.
رفع اشکال
- Removed exception from Baseline Profile Gradle Plugin when AGP version is 8.3.0 or higher.
- Fix for including library baseline profiles in AAR prior to AGP 8.3.0-alpha15.
Version 1.2.2
1 دسامبر 2023
androidx.benchmark:benchmark-*:1.2.2
is released. Version 1.2.2 contains these commits.
Baseline Profiles
- Execution logs will show the baseline profile output file path as a local file URI ( aosp/2843918 , aosp/2853665 , b/313976958 )
نسخه 1.2.1
15 نوامبر 2023
androidx.benchmark:benchmark-*:1.2.1
is released. نسخه 1.2.1 حاوی این commit ها است.
ویژگی های جدید
- Improved error message when user disables test variants ( b/307478189 )
- Added properties to support AS test run integration ( b/309805233 ), ( b/309116324 )
نسخه 1.2.0
18 اکتبر 2023
androidx.benchmark:benchmark-*:1.2.0
is released. نسخه 1.2.0 حاوی این commit ها است.
تغییرات مهم از 1.1.0
Baseline Profiles
- New Baseline Profile Gradle Plugin automates capturing and including baseline profiles in your test and build workflow.
-
BaselineProfileRule.collect
now stable, a streamlined and simplified version of the previous experimentalBaselineProfileRule.collectBaselineProfile
API- Just specify
packageName
, and drive your app
- Just specify
- For libraries generating baseline profiles, you can now filter the rules generated either in code (
BaselineProfileRule.collect
argument), or even more simply in the gradle plugin - رفع می کند
- Fixed baseline profile collection on Android U+ ( Id1392 , b/277645214 )
Macrobenchmark
- تالیف
- Macrobenchmark now correctly fully resets compilation state for each compile - this requires reinstalling the APK prior to Android 14, so benchmarking on Android 14+ is strongly recommended if you want to persist state (like user login) in what's being measured.
- You can also work around this by controlling app compilation separately, and skipping compilation with
CompilationMode.Ignore()
or instrumentation argument
Instrumentation Arguments
- Support for
androidx.benchmark.dryRunMode.enable
instrumentation argument, (already available in microbenchmark) for quicker validation runs (eg when creating the benchmark, or in presubmit) - Support for
androidx.benchmark.profiling.mode=StackSampling
andMethodTracing
. - Added
androidx.benchmark.enabledRules
to allow runtime filtering baseline profile vs macrobenchmark rule tests - Added
androidx.benchmark.perfettoSdkTracing.enable
argument to enable tracing with tracing-perfetto, eg Compose recomposition tracing. Note that when used withStartupMode.COLD
, timing will be significantly affected as the tracing library is loaded and enabled during app startup.
- Support for
الزامات
- Macrobenchmark now requires
ProfileInstaller
1.3.0 or greater in the target app, to enable profile capture / reset, and shader cache clearing.
- Macrobenchmark now requires
New Experimental Metric APIs
- Added experimental
TraceSectionMetric
, which allows for extracting simple timing fromtrace("") {}
blocks in your app, or TraceMetric for leveraging the full query capability of PerfettoTraceProcessor
. - Added experimental
PowerMetric
to capture power usage information - Added experimental
MemoryCountersMetric
to count page faults - Added experimental
PerfettoTraceProcessor
API, which is used internally to extract metrics from System traces (aka Perfetto traces)
- Added experimental
رفع می کند
- Fixed crashes when installing or extracting profiles from an app installed from multiple APKs (eg from app bundle).
- Fixed
FrameTimingMetric
ignoring frames with inconsistent frame IDs (generally, frames during ripples on API 31+) ( I747d2 , b/279088460 ) - Fixed parsing errors on traces > 64MB ( Ief831 , b/269949822 )
- Clarified errors when device (especially emulator) OS image not correctly configured for tracing, or compilation
- Skip battery level check for devices without battery (micro and macro)
- Improved file output, with more clear errors for invalid output directories, and safer defaults
- Improved stability of
StartupMode.COLD
by consistently dropping the shader cache (also exposed viaMacrobenchmarkScope.dropShaderCache
) - Fixed leanback fallback for
startActivityAndWait
.
Microbenchmark
- ویژگی ها
- Profiling was moved to a separate phase, after other metrics, so one test run can display both accurate timing and profiling results.
- Experimental APIs
- Added experimental
MicrobenchmarkConfig
API for defining custom metrics and configuring tracing and profiling. Can be used to capture method traces, or capture tracepoints (but be aware of tracing overhead). - Added experimental APIs for controlling
BenchmarkState
separately fromBenchmarkRule
, without JUnit - Added experimental
PerfettoTrace
record to enable capturing Perfetto traces, with custom configuration, separate from benchmark APIs.
- Added experimental
- رفع می کند
- Workaround missing leading whitespaces in Android Studio benchmark output.
- Fix issue where warnings could fail to print in Android Studio benchmark output.
- Fixed
SampledProfiling
crash on Android 13 (API 33) and higher. - Massively improved performance of
dryRunMode
by skippingIsolationActivity
and Perfetto tracing (Up to 10x faster dry run mode on older OS versions).
نسخه 1.2.0-rc02
6 اکتبر 2023
androidx.benchmark:benchmark-*:1.2.0-rc02
is released. نسخه 1.2.0-rc02 حاوی این commit ها است.
رفع اشکال
- Fix Benchmark file output to no longer break
BaselineProfile
Plugin file copying. Files were generated and copied off device, but had been renamed such that the gradle plugin wouldn't see them. ( I8dbcc , b/303034735 , b/296453339 ) - Clarified
tracing-perfetto
loading error messages when injecting from macrobenchmark module into target application.
نسخه 1.2.0-rc01
20 سپتامبر 2023
androidx.benchmark:benchmark-*:1.2.0-rc01
is released. نسخه 1.2.0-rc01 حاوی این commit ها است.
رفع اشکال
- An exception (with remedy instructions) is now thrown when Perfetto SDK tracing fails to initialize in a Benchmark. ( I6c878 , b/286228781 )
- Fix OOM crash when converting ART method trace -> perfetto format. ( I106bd , b/296905344 )
- (Macrobenchmark) Clarified method tracing label when linked in Studio test output, and fixed method tracing filenames to be unique on device/host, so they won't be overwritten when more than one benchmark is run. ( I08e65 , b/285912360 )
- Ensures that the device is awake when capturing a baseline profile. ( I503fc )
Version 1.2.0-beta05
30 آگوست 2023
androidx.benchmark:benchmark-*:1.2.0-beta05
is released. Version 1.2.0-beta05 contains these commits.
ویژگی های جدید
- The Baseline Profile Gradle Plugin now supports Android Gradle Plugin 8.3. ( aosp/2715214 )
Version 1.2.0-beta04
23 آگوست 2023
androidx.benchmark:benchmark-*:1.2.0-beta04
is released. Version 1.2.0-beta04 contains these commits.
ویژگی های جدید
- The Baseline Profiles Gradle plugin now supports Android Gradle Plugin 8.3. ( aosp/2715214 )
رفع اشکال
- Fix failures in writing / moving and pulling files (especially those from parameterized tests) by sanitizing output file names further, avoiding '=' and ':' in output file names. ( I759d8 )
نسخه 1.2.0-beta03
9 آگوست 2023
androidx.benchmark:benchmark-*:1.2.0-beta03
is released. نسخه 1.2.0-beta03 حاوی این تعهدات است.
تغییرات API
- Added argument to filter
TraceSectionMetric
to only the target package, on by default ( Ia219b , b/292208786 )
رفع اشکال
- Renamed
fullTracing.enable
instrumentation argument toperfettoSdkTracing.enable
for consistency with artifact name, and other references.fullTracing.enable
will continue to work as a fallback. ( I7cc00 ) - Benchmark library internal tracepoints (including microbenchmark loop/phase tracing) will now show up in Studio system trace viewer, and nest under the correct process in Perfetto. ( I6b2e7 , b/293510459 )
- Removed macrobenchmark NOT-PROFILEABLE error on API 31+, and skip profileable check on eng/userdebug rooted devices. ( I2abac , b/291722507 )
- When using Dex Layout Optimizations, startup profile rules are also now considered as baseline profile rules. ( aosp/2684246 , b/293889189 )
نسخه 1.2.0-beta02
26 جولای 2023
androidx.benchmark:benchmark-*:1.2.0-beta02
is released. نسخه 1.2.0-beta02 حاوی این تعهدات است.
تغییرات API
- Added experimental APIs for microbench custom metrics and configuration (eg profiler, and tracing). ( I86101 , b/291820856 )
رفع اشکال
- Report error in macrobench when OS is misconfigured for tracing, as was recently fixed in API 26/28 ARM64 emulators. ( I0a328 , b/282191686 )
- Added detail to compilation reset failure to suggest updating emulator, as some emulators have recently fixed this issue. ( I8c815 , b/282191686 )
- Make
androidx.test.uiautomator:uiautomator:2.2.0
anapi
instead of animplementation
dependency. ( I1981e )
نسخه 1.2.0-beta01
18 جولای 2023
androidx.benchmark:benchmark-*:1.2.0-beta01
is released. نسخه 1.2.0-beta01 حاوی این تعهدات است.
رفع اشکال
- Fix warnings being sometimes suppressed in Benchmark output in Studio, and workaround leading whitespaces from Benchmark output not showing up in Studio ( Ia61d0 , b/227205461 , b/286306579 , b/285912360 )
- Fixed comment for
FrameTimingMetric
. The submetric is namedframeDurationCpuMs
. ( Ib097f , b/288830934 ).
Version 1.2.0-alpha16
21 ژوئن 2023
androidx.benchmark:benchmark-*:1.2.0-alpha16
is released. Version 1.2.0-alpha16 contains these commits.
تغییرات API
-
BaselineProfileRule.collectBaselineProfile()
API has been renamed toBaselineProfileRule.collect()
. ( I4b665 )
رفع اشکال
- Macrobenchmark support for
androidx.benchmark.profiling.mode = MethodTracing
. ( I7ad37 , b/285912360 ) - Microbenchmark profiling moved to a separate phase, so it occurs in sequence after measurement, instead of replacing it.
MethodTracing
trace sections are also now included in the captured Perfetto trace, if present. ( I9f657 , b/285014599 ) - Add count measurement to
TraceSectionMetric
withMode.Sum
. ( Ic121a , b/264398606 )
Version 1.2.0-alpha15
7 ژوئن 2023
androidx.benchmark:benchmark-*:1.2.0-alpha15
is released. Version 1.2.0-alpha15 contains these commits.
ویژگی های جدید
- Added experimental
MemoryUsageMetric
for tracking memory usage of a target application. ( I56453 , b/133147125 , b/281749311 ) - Add support for fully custom Perfetto configs with
PerfettoTrace.record
( If9d75 , b/280460183 ) - Added property to skip baseline profile generation. Usage:
./gradlew assemble -Pandroidx.baselineprofile.skipgeneration
. ( I37fda , b/283447020 )
تغییرات API
- The
collectBaselineProfile
API always generates stable baseline profiles. ThecollectStableBaselineProfile
API has been removed andcollectBaselineProfile
should be used instead. ( I17262 , b/281078707 ) - Changed
BaselineProfileRule
'sfilterPredicate
arg to non-null, with a equivalent default value so that the default filter behavior is more clear in docs. ( I3816e )
رفع اشکال
- Disable
IsolationActivity
and Perfetto tracing indryRunMode
to significantly improve performance, as these were majority of runtime. ( Ie4f7d ) - Support for call stack sampling in Macrobenchmarks using instrumentation test arguments
androidx.benchmark.profiling.mode=StackSampling
andandroidx.benchmark.profiling.sampleFrequency
. ( I1d13b , b/282188489 ) - Fixes crash when dropping shaders on Android U (API 34), as well as on emulators. ( I031ca , b/274314544 )
Version 1.2.0-alpha14
3 مه 2023
androidx.benchmark:benchmark-*:1.2.0-alpha14
is released. Version 1.2.0-alpha14 contains these commits.
رفع اشکال
- Fix
FrameTimingMetric
ignoring frames with inconsistent frame IDs. This would cause some animations on recent platform versions (API 31+) to ignore many frames whileRenderThread
was animating (eg during a ripple). ( I747d2 , b/279088460 ) - Fixed trace processor parsing for traces larger than 64Mb. ( Ief831 , b/269949822 )
- Fixed baseline profile generation on Android U failing because of the different output of
pm dump-profiles
command. ( Id1392 , b/277645214 ) - Fix GPU clock locking script to compare strings correctly ( I53e54 , b/213935715 )
Version 1.2.0-alpha13
5 آوریل 2023
androidx.benchmark:benchmark-*:1.2.0-alpha13
is released. Version 1.2.0-alpha13 contains these commits.
تغییرات API
- Added profile type parameter when generating baseline profiles to support upcoming startup profile feature ( Ie20d7 , b/275093123 )
- Added new experimental
TraceMetric
API for defining fully custom metrics based on content of a Perfetto trace. ( I4ce31 , b/219851406 ) - Add an experimental metric to determine the number of page faults during a benchmark. ( I48db0 )
Version 1.2.0-alpha12
22 مارس 2023
androidx.benchmark:benchmark-*:1.2.0-alpha12
is released. Version 1.2.0-alpha12 contains these commits.
ویژگی های جدید
- The new baseline profile gradle plugin is released in alpha version, making it easier to generate a baseline profile and simplifying the developer workflow.
تغییرات API
- Removed Perfetto tracing support on API 21 and 22, which includes both Microbenchmarks and the experimental
PerfettoTrace
APIs. Prior to this version,UiAutomation
connections were unreliable on some devices. ( I78e8c ) - Added public experimental API for
PerfettoTraceProcessor
to enable parsing trace content. This is a step toward fully custom metrics based on Perfetto trace data. ( I2659e , b/219851406 )
Version 1.2.0-alpha11
8 مارس 2023
androidx.benchmark:benchmark-*:1.2.0-alpha11
is released. Version 1.2.0-alpha11 contains these commits.
رفع اشکال
- Fixed crashes in
MacrobenchmarkRule
andBaselineProfileRule
when reinstalling or extracting profiles from an app bundle with multiple APKs. ( I0d8c8 , b/270587281 )
Version 1.2.0-alpha10
22 فوریه 2023
androidx.benchmark:benchmark-*:1.2.0-alpha10
is released. Version 1.2.0-alpha10 contains these commits.
ویژگی های جدید
- On Android 14+, Macrobenchmark no longer reinstalls target applications to reset compilation state, thanks to a new platform feature. Previously it was necessary to have a rooted device, or to deal with all application state (eg user login) being removed before each benchmark runs. ( I9b08c , b/249143766 )
رفع اشکال
- Fix
DryRunMode
to no longer crash with empty profile, due to compilation skipping. Instead, it runs a single iteration and extracts the profile to ensure something is captured. ( I2f05d , b/266403227 ) - Fix
PowerMetric
crash when checking for powerstats presence on old API levels. ( 5faaf9 , b/268253898 )
Version 1.2.0-alpha09
11 ژانویه 2023
androidx.benchmark:benchmark-*:1.2.0-alpha09
is released. Version 1.2.0-alpha09 contains these commits.
رفع اشکال
- Enabled passing
None
toandroidx.benchmark.enabledRules
instrumentation arg to disable all benchmarks / baseline profile generation. ( I3d7fd , b/258671856 ) - Fix
PerfettoTrace
capture in app modules (ie non-self-instrumenting test APKs) ( I12cfc ) - Fixed baseline profile adb pull argument order in Studio output ( I958d1 , b/261781624 )
- Arm emulator api 33 is now correctly recognized as such when trying to run a macrobenchmark and will correctly print the warning. ( 69133b , b/262209591 )
- Skip battery level check on devices without battery in Macrobenchmark ( fe4114 , b/232448937 )
نسخه 1.2.0-alpha08
7 دسامبر 2022
androidx.benchmark:benchmark-*:1.2.0-alpha08
is released. نسخه 1.2.0-alpha08 حاوی این commit ها است.
تغییرات API
- Added experimental new APIs
PerfettoTrace.record {}
andPerfettoTraceRule
to capture Perfetto traces (also known as System Traces) as part of a test, to inspect test behavior and performance. ( I3ba16 ) -
BaselineProfileRule
now accepts a filter predicate instead of a list of package prefixes. This gives the test full control on filtering. ( I93240 ) - Add an experimental API
BaselineProfileRule.collectStableBaselineProfile
which waits until a baseline profile is stable for N iterations. ( I923f3 ) - Add the ability to specify an output file name prefix when generating baseline profiles using
BaselineProfileRule
. ( I7b59f , b/260318655 )
رفع اشکال
- Improve safety of file output writing, which should prevent output files from silently not being written / appended, especially on API 21/22. ( If8c44 , b/227510293 )
- Fix
simpleperf
trace output to create and place the file correctly. This should also more generally fix issues where a file is unsuccessfully pulled by gradle. ( I12a1c , b/259424099 ) - Improve profileinstaller error message printed when profileinstaller is too old. This now tells you to update profileinstaller version (1.2.1) for measuring baseline profiles on API 31 through 33, instead of saying it's not supported. ( Ia517f , b/253519888 )
- Fix several shell command failures onerror message Print needed API <=23, including failed perfetto capture binary setup and trace capture failures ( Ib6b87 , b/258863685 )
- Automatically sort generated profile rules to minimize the number of changes as they change over time (when checking-in profile rules into source control). ( Ie2509 )
- Fixed crash on unrooted builds below Android 13 (API 33) with message
Expected no stderr from echo 3 > /proc/sys/vm/drop_caches
( I6c245 , b/259508183 )
Known Issues - MacrobenchmarkScope.dropShaderCache()
may crash due to a missing broadcast registry in profileinstaller manifest, which has not yet been released. ( I5c728 , b/258619948 ) To workaround the issue in profileinstaller:1.3.0-alpha02
, add the following to your application's (not your benchmark's) 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
is released. نسخه 1.2.0-alpha07 حاوی این commit ها است.
تغییرات API
- Adds
PowerMetric
API for measuring energy and power in Macrobenchmarks. ( Ife601 , b/220183779 ) - Fixed
MacrobenchmarkScope.dropShaderCache()
to actually drop the shader cache. This removes roughly 20ms of noise fromStartupMode.COLD
benchmarks, as shaders are now consistently cleared each iteration. Previously,Partial
compilation using warmup iterations would report incorrectly fast numbers, as shader caching was more likely to happen during warmup. This fix requires either a rooted device, or usingprofileinstaller:1.3.0-alpha02
in the target app. ForProfileInstaller
library's API changes, please refer to ProfileInstaller 1.30-alpha02 page. ( Ia5171 , b/231455742 ) - Added
TraceSectionMode("label", Mode.Sum)
, allowing measurement of total time spent on multiple trace sections with the same label. For instance,TraceSectionMetric("inflate", Mode.Sum)
will report a metricinflateMs
for the total time in a macrobenchmark spent on inflation. Also removed API 29 requirement, asTraceSectionMetric
works together withandroidx.tracing.Trace
back to lower API levels, with the use offorceEnableAppTracing
within the target app. ( Id7b68 , b/231455742 )
رفع اشکال
- Improved safety of all internal shell commands by validating all output/errors. ( I5984d , b/255402908 , b/253094958 )
- Specify device in baseline profile
adb pull
command, so the pull command can be simply copied if multiple devices are connected (up to one emulator) ( I6ac6c , b/223359380 ) - Add error if macrobenchmark test apk isn't set up as self-instrumenting. This error prevents macrobenchmarking from within the target app's process. In process, macrobench wouldn't be able to compile/kill/cold start the app, or control its own permissions ( I4279b )
- Fixed an issue in
measureRepeated()
whereStartupMode.COLD
wouldn't kill the target process aftersetupBlock
. NowsetupBlock
interacting with the app will not leave the app process running, and an invalid cold start measurement. ( I8ebb7 )
نسخه 1.2.0-alpha06
24 اکتبر 2022
androidx.benchmark:benchmark-*:1.2.0-alpha06
is released. نسخه 1.2.0-alpha06 حاوی این commit ها است.
تغییرات API
-
BaselineProfileRule
no longer requires root on Android 13 (API 33), and is no longer experimental. ( Ie0a7d , b/250083467 , b/253094958 )- This change also fixes how profiles from an app are flushed to disk on unrooted devices, but requires updating the target app's profileinstaller dependency.
- To use
BaselineProfileRule
orCompilationMode.Partial(warmupIterations)
on an unrooted device, you must also update your target app to useandroidx.profileinstaller.profileinstaller:1.3.0-alpha01
. This enables flushing the profile to disk correctly, so that it can be compiled/extracted.
رفع اشکال
- Fixes
SampledProfiling
crash on API 33+. ( I40743 , b/236109374 )
نسخه 1.2.0-alpha05
5 اکتبر 2022
androidx.benchmark:benchmark-*:1.2.0-alpha05
is released. نسخه 1.2.0-alpha05 حاوی این commit ها است.
رفع اشکال
- Fix frame breakdown in Studio system trace viewer for benchmark captured traces ( I3f3ae , b/239677443 )
- Correct
FrameTimingMetric
to listFrameOverrun
as requiring API 31 instead of 29 ( I716dd , b/220702554 ) - Set iteration in
BaselineProfileRule
, and throw clearly if target package not installed (was already done for MacrobenchmarkRule). ( Ic09a3 , b/227991471 )
نسخه 1.2.0-alpha04
21 سپتامبر 2022
androidx.benchmark:benchmark-*:1.2.0-alpha04
is released. نسخه 1.2.0-alpha04 حاوی این commit ها است.
ویژگی های جدید
Add support for
dryRunMode.enable
instrumentation argument to macrobenchmark (already available in micro) for faster local development, and validating app automation (eg in presubmit). This overrides iterations to 1, skips compilation, suppresses all configuration errors , and disables measurement .json file output. ( Ib51b4 , b/175149857 )On Gradle command line:
./gradlew macrobenchmark:cC -P android.testInstrumentationRunnerArguments.androidx.benchmark.dryRunMode.enable=true
In build.gradle:
android { defaultConfig { testInstrumentationRunnerArgument 'androidx.benchmark.dryRunMode.enable', 'true' } }
رفع اشکال
- Fixed
StartupTimingMetric
to no longer require measured Activities to be launched throughMacrobenchmarkScope.startActivityAndWait()
. This means the metric can pick up launches from eg notifications,Context.startActivity()
, in-app Activity based navigation, or shell commands. ( Ia2de6 , b/245414235 ) - Fix bug where
startActivityAndWait
would timeout trying to wait for launch completion on emulators by reducing strictness of frame detection. ( Ibe2c6 , b/244594339 , b/228946895 )
نسخه 1.2.0-alpha03
7 سپتامبر 2022
androidx.benchmark:benchmark-*:1.2.0-alpha03
is released. نسخه 1.2.0-alpha03 حاوی این commit ها است.
ویژگی های جدید
- Added experimental APIs for using
BenchmarkState
independently, separate fromBenchmarkRule
/JUnit4
. ( Id478f , b/228489614 )
رفع اشکال
- Added Leanback fallback for
startActivityAndWait
. ( 01ed77 , b/242899915 )
نسخه 1.2.0-alpha02
24 آگوست 2022
androidx.benchmark:benchmark-*:1.2.0-alpha02
is released. نسخه 1.2.0-alpha02 حاوی این commit ها است.
تغییرات API
- Default to
am force stop
forMacrobenchmarkScope.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. نسخه 1.2.0-alpha01 حاوی این commit ها است.
ویژگی های جدید
- New tracing-perfetto-common component allowing tooling to enable Perfetto SDK tracing in an app that exposes it ( I2cc7f )
Added
androidx.benchmark.enabledRules
instrumentation 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 generatingBaselineProfiles
on 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
PowerMetric
for measuring energy and power tasks in benchmarks. ( I9f39b , b/220183779 ) - Added a new compilation mode
CompilationMode.Ignore
to skip profile reset and compilation. ( Ibbcf8 , b/230453509 ) - Added a new parameter to
BaselineProfileRule#collectBaselineProfile
to 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
UnsupportedOperationException
was 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
TotalPowerMetric
andTotalEnergyMetric
for 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. نسخه 1.1.1 حاوی این commit ها است.
رفع اشکال
- Fixes
android.system.ErrnoException: open failed: EACCES
which 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. نسخه 1.1.0 حاوی این commit ها است.
- 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.Partial
to measure the effectiveness of Baseline Profiles. -
@BaselineProfileRule
to automatically generate Baseline profiles for a given critical user journey.
-
Support for Allocation metrics & profiling during Microbenchmark runs.
نسخه 1.1.0-rc03
1 ژوئن 2022
androidx.benchmark:benchmark-*:1.1.0-rc03
is released. نسخه 1.1.0-rc03 حاوی این commit ها است.
رفع اشکال
Avoid reinstalling the target package on every benchmark iteration. ( aosp/2093027 , b/231976084 )
Remove the
300ms
delay 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
CompilationMode
having 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=false
Made it possible to share a module between macrobenchmarks and baseline profile generating tests by adding
androidx.benchmark.enabledRules
instrumentation argument. Pass in 'Macrobenchmark', or 'BaselineProfile' to just run one type of test, eg when generatingBaselineProfiles
on 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. نسخه 1.1.0-rc01 حاوی این commit ها است.
رفع اشکال
- 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 )
نسخه 1.1.0-beta04
23 فوریه 2022
androidx.benchmark:benchmark-*:1.1.0-beta04
is released. نسخه 1.1.0-beta04 حاوی این تعهدات است.
رفع اشکال
Fix missing metrics on Android 10, and
NoSuchElementException
caused by process names not being captured correctly in traces. ( Ib4c17 , b/218668335 )Use
PowerManager
for 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
measureRepeated
thread 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.profileinstaller
and Android Gradle Plugin. aosp/1977029
نسخه 1.1.0-beta03
9 فوریه 2022
androidx.benchmark:benchmark-*:1.1.0-beta03
is released. نسخه 1.1.0-beta03 حاوی این تعهدات است.
تغییرات API
- Added
AudioUnderrunMetric
into macrobenchmark library under experimental flag to allow detection of audio underruns ( Ib5972 ) BaselineProfileRule
no longer accepts asetup
block 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
->FrameDurationUi
to clarify these are durations, not timestamps, and to match prefixes. ( I0eba3 , b/216337830 )
نسخه 1.1.0-beta02
26 ژانویه 2022
androidx.benchmark:benchmark-*:1.1.0-beta02
is released. نسخه 1.1.0-beta02 حاوی این تعهدات است.
رفع اشکال
- 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 pull
command 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. نسخه 1.1.0-beta01 حاوی این تعهدات است.
رفع اشکال
- Fixes profiler argument enable being ignored. ( I37373 , b/210619998 )
- Removed deprecated
CompliationModes
( I98186 , b/213467659 ) - Switched baseline profile arg of
CompilationMode.Partial
to 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.Trace
orandroidx.tracing
Jetpack 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
CompilationModes
into 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
null
in certain warmup scenarios). ( Id3b68 , b/208357448 , b/208369635 )
رفع اشکال
- Fixed
CompilationMode.Speed
incorrectly 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 )
نسخه 1.1.0-alpha11
3 نوامبر 2021
androidx.benchmark:benchmark-*:1.1.0-alpha11
is released. نسخه 1.1.0-alpha11 حاوی این commit ها است.
تغییرات API
- Macrobenchmark now has a
minSdkVersion
of23
. ( If2655 ) - Adds a new experimental
BaselineProfileRule
which 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 )
نسخه 1.1.0-alpha10
27 اکتبر 2021
androidx.benchmark:benchmark-*:1.1.0-alpha10
is released. نسخه 1.1.0-alpha10 حاوی این commit ها است.
تغییرات 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. نسخه 1.1.0-alpha09 حاوی این commit ها است.
رفع اشکال
- 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. نسخه 1.1.0-alpha08 حاوی این commit ها است.
تغییرات 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. نسخه 1.1.0-alpha07 حاوی این commit ها است.
تغییرات 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
ProfileInstaller
to 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-alpha04
or greater. -
StartupMode.COLD
+CompilationMode.None
benchmarks are now more stable. ( I770cd , b/196074999 )
نسخه 1.1.0-alpha06
18 آگوست 2021
androidx.benchmark:benchmark-*:1.1.0-alpha06
is released. نسخه 1.1.0-alpha06 حاوی این commit ها است.
تغییرات API
- Added
androidx.benchmark.iterations
instrumentation 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.BaselineProfile
is 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. نسخه 1.1.0-alpha05 حاوی این commit ها است.
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
EmptyActivity
to bring the target app out of a force-stopped state to better supportCompilationMode.BaselineProfile
. ( Id7cac , b/192084204 ) - Changed trace file extension to
.perfetto-trace
to 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 )
نسخه 1.1.0-alpha03
16 ژوئن 2021
androidx.benchmark:benchmark-*:1.1.0-alpha03
is released. نسخه 1.1.0-alpha03 حاوی این commit ها است.
ویژگی های جدید
- Added a new
CompilationMode.BaselineProfile
to 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. نسخه 1.1.0-alpha01 حاوی این commit ها است.
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:
-
testBuildType
is 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.debug
is 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
InstrumentationResultParser
error 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-lint
dependency, 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
additionalTestOutputDir
instrumentation 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
ExperimentalAnnotationReport
is 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.reportData
API is now marked experimental
رفع اشکال
- Fix for the clock-locking script, which would fail on devices that were either missing the
cut
orexpr
shell utilities. - Fixed an issue with
./gradlew lockClocks
task that would hang on devices that were rooted with an older version of the su utility, which did not support the-c
flag.
نسخه 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
AndroidBenchmarkRunner
by 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 )
-
@Parameterized
benchmarks 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-junit4
contains classes with JUnit dependency:AndroidBenchmarkRunner
, andBenchmarkRule
, both of which have moved into theandroidx.benchmark.junit4
package -
benchmark:benchmark-common
contains 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
External contributions
- 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.reportData
API ( b/132887006 )
رفع اشکال
- Fixed
./gradlew lockClocks
not 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 .