مقياس الأداء
androidx.benchmark
androidx.benchmark.junit4
androidx.benchmark.macro
androidx.benchmark.macro.junit4
| آخر الأخبار | الإصدار الثابت | إصدار محتمل | الإصدار التجريبي | الإصدار الأوّلي |
|---|---|---|---|---|
| 01 يوليو 2026 | 1.4.1 | - | - | 1.5.0-alpha07 |
تحديد الاعتماديات
لإضافة اعتمادية على Benchmark، يجب تضمين مستودع Google Maven في مشروعك. اطّلِع على مستودع Maven من Google لمزيد من المعلومات.
Macrobenchmark
لاستخدام Macrobenchmark في مشروعك، أضِف التبعيات التالية إلى ملف build.gradle الخاص بوحدة Macrobenchmark:
رائع
dependencies { androidTestImplementation "androidx.benchmark:benchmark-macro-junit4:1.4.1" }
Kotlin
dependencies { androidTestImplementation("androidx.benchmark:benchmark-macro-junit4:1.4.1") }
Microbenchmark
لاستخدام Microbenchmark في مشروعك، أضِف الاعتمادات التالية إلى ملف build.gradle الخاص بوحدة Microbenchmark:
رائع
dependencies { androidTestImplementation "androidx.benchmark:benchmark-junit4:1.4.1" } android { ... defaultConfig { ... testInstrumentationRunner "androidx.benchmark.junit4.AndroidBenchmarkRunner" } }
Kotlin
dependencies { androidTestImplementation("androidx.benchmark:benchmark-junit4:1.4.1") } android { ... defaultConfig { ... testInstrumentationRunner = "androidx.benchmark.junit4.AndroidBenchmarkRunner" } }
توفّر مكتبة Microbenchmark أيضًا مكوّنًا إضافيًا لـ Gradle لاستخدامه مع وحدة اختبار الأداء الصغير.
يضبط هذا المكوّن الإضافي الإعدادات التلقائية لإعدادات الإنشاء للوحدة، ويُعدّ نسخة من نتائج الاختبار إلى المضيف، ويقدّم
مهمة ./gradlew lockClocks.
لاستخدام المكوّن الإضافي، أدرِج السطر التالي في مجموعة plugins في ملف
build.gradle من المستوى الأعلى:
رائع
plugins { id 'androidx.benchmark' version '1.4.1' apply false }
Kotlin
plugins { id("androidx.benchmark") version "1.4.1" apply false }
بعد ذلك، طبِّق المكوّن الإضافي على ملف build.gradle الخاص بوحدة الأداء المرجعي.
رائع
plugins { id 'androidx.benchmark' }
Kotlin
plugins { id("androidx.benchmark") }
الملاحظات
تساعدنا ملاحظاتك في تحسين Jetpack. يُرجى إعلامنا إذا اكتشفت مشاكل جديدة أو كانت لديك أفكار لتحسين هذه المكتبة. يُرجى الاطّلاع على المشاكل الحالية في هذه المكتبة قبل إنشاء مشكلة جديدة. يمكنك إضافة صوتك إلى مشكلة حالية من خلال النقر على زر النجمة.
يُرجى الاطّلاع على مستندات Issue Tracker للحصول على مزيد من المعلومات.
الإصدار 1.5
الإصدار 1.5.0-alpha07
01 يوليو 2026
تم طرح androidx.benchmark:benchmark-*:1.5.0-alpha07. يتضمّن الإصدار 1.5.0-alpha07 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
- تبسيط عملية تسجيل سجلات Perfetto على الجهاز (I48810)
- نقل واجهات برمجة التطبيقات التجريبية للإضافة
TraceProcessor.runServerمنandroidx.benchmark:benchmark-macroإلىandroidx.benchmark:benchmark-common، ثم إلى حزمةandroidx.benchmarkسيؤدي ذلك إلى إتاحة استخدامها في اختبارات الأداء المصغّرة في المستقبل. (Ie25bb، b/393640753)
إصلاح الأخطاء
- تعديل عملية تنفيذ traceprocessor (بالإضافة إلى عملية التقاط بيانات Perfetto Trace غير المجمّعة) لاستخدام الإصدار 56.0 من Perfetto (I8fb9d)
- اضبط
androidx.benchmark.requireAotوandroidx.benchmark.requireAotعلى "صحيح" تلقائيًا. تضمن هذه الإعدادات التلقائية الأكثر أمانًا إجراء عملية الترجمة قبل تشغيل اختبارات الأداء الدقيق (يتم تفعيلها تلقائيًا باستخدام مكوّن Gradle الإضافي الخاص باختبار الأداء عند استخدام الإصدار 8.4 من "مكوّن Android الإضافي لبرنامج Gradle" أو الإصدارات الأحدث)، وعدم استخدامmeasureRepeatedفي سلسلة التعليمات الرئيسية، حيث يمكن أن يؤدي ذلك إلى حدوث أخطاء ANR. (I1bc3c، b/379115078) - تمت زيادة مهلة إيقاف Perfetto من 5 ثوانٍ إلى 30 ثانية (لجلسات Perfetto التي تم تسجيلها في اختبار الأداء فقط). تمت إضافة تسجيل أوضح للأخطاء عند حدوث المشكلة. (If188f، b/435589290)
الإصدار 1.5.0-alpha06
6 مايو 2026
تم طرح androidx.benchmark:benchmark-*:1.5.0-alpha06. يتضمّن الإصدار 1.5.0-alpha06 هذه التعديلات.
إصلاح الأخطاء
- التعامل مع بيئات المستخدمين المتعددين بسلاسة عند نقل الملفات من دليل نتائج قياس الأداء إلى دليل نتائج الاختبار الإضافي (I90da5، b/489358149)
الإصدار 1.5.0-alpha05
25 مارس 2026
تم طرح androidx.benchmark:benchmark-*:1.5.0-alpha05. يتضمّن الإصدار 1.5.0-alpha05 هذه التعديلات.
إصلاح الأخطاء
- تم تعديل
ArtMetricلتضمين الحِزم ذات المستوى الأعلى، وهو أمر مهم خاصةً عند استخدام الإصدار 9.1 أو إصدار أحدث من "مكوّن Android الإضافي في Gradle"/R8، أو الخيار العام-repackageclasses. في السابق، كانArtMetricيتعذّر عليه رصد عمليات تحميل الفئات هذه في مقاييسartClassLoad.... (If8a35، b/487402058)
الميزات الجديدة
- تمت إضافة وسيطة جديدة للأدوات androidx.benchmark.requireLockedClocks تتيح تفعيل عملية التحقّق مما إذا كانت سرعات وحدة المعالجة المركزية (CPU) ثابتة للأجهزة التي تم عمل روت لها. (Id82e8، b/468039042)
الإصدار 1.5.0-alpha04
11 مارس 2026
تم طرح androidx.benchmark:benchmark-*:1.5.0-alpha04. يتضمّن الإصدار 1.5.0-alpha04 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
- تمّت إضافة
JvmOverloadsإلىPowerMetric.EnergyوPowerMetric.Power(Iac0d0، b/481371562).
إصلاح الأخطاء
- تم تعديل
ArtMetricلتضمين الحِزم ذات المستوى الأعلى، وهو أمر مهم خاصةً عند استخدام الإصدار 9.1 أو إصدار أحدث من "مكوّن Android الإضافي في Gradle"/R8، أو الخيار العام-repackageclasses. في السابق، كانArtMetricيتعذّر عليه رصد عمليات تحميل الفئات هذه في مقاييسartClassLoad.... (I207ca، b/487402058)
الإصدار 1.5.0-alpha03
11 فبراير 2026
تم طرح androidx.benchmark:benchmark-*:1.5.0-alpha03. يتضمّن الإصدار 1.5.0-alpha03 هذه التعديلات.
- تم تعديلها لتعتمد على الإصدار التجريبي 2.4 من UiAutomator.
الإصدار 1.5.0-alpha02
28 يناير 2026
تم طرح androidx.benchmark:benchmark-*:1.5.0-alpha02. يتضمّن الإصدار 1.5.0-alpha02 هذه التعديلات.
إصلاح الأخطاء
تمّت إضافة دعم جزئي لإنشاء ملفات تعريف أساسية لوحدات Kotlin المتوافقة مع منصات متعددة. يمكن عادةً تحديد التبعيات على الملفات الشخصية باستخدام إعدادات
baselineProfileGradle في قسم التبعيات، ولكن لا يعمل ذلك حاليًا مع وحدات KMP.kotlin { androidLibrary { namespace = "com.example.namespace" compileSdk = 36 } sourceSets { androidMain.dependencies { // THIS DOES NOT WORK // baselineProfile(":yourProducerProject") } } }بدلاً من ذلك، يجب تحديد التبعيات باستخدام
baselineProfile**الإضافة. (Ie19c4)plugins { id("org.jetbrains.kotlin.multiplatform") id("com.android.kotlin.multiplatform.library") id("androidx.baselineprofile.consumer") } kotlin { androidLibrary { namespace = "com.example.namespace" compileSdk = 36 } sourceSets { androidMain.dependencies { // ... } } } // Define dependencies // This works ! baselineProfile { variants { androidMain { from(project(":yourProducerProject")) } } }
الإصدار 1.5.0-alpha01
17 ديسمبر 2025
تم طرح androidx.benchmark:benchmark-*:1.5.0-alpha01. يتضمّن الإصدار 1.5.0-alpha01 هذه التعديلات.
- يستخدم الإصدار 1.5 من Macrobenchmark الإصدار 2.4 من
UiAutomatorلتسهيل التفاعل مع التطبيق الذي يتم قياسه. يوسّع العنصر MacrobenchmarkScope الآن UiAutomatorTestScope، ما يتيح لك استخدام واجهات برمجة التطبيقات الحديثةUiAutomator، مثلonElement { ... }.click(). - لمزيد من المعلومات عن
UiAutomator2.4، يُرجى الاطّلاع على المستندات.
الميزات الجديدة
- لم يعُد المكوّن الإضافي لنظام Gradle الخاص بملفات Baseline Profile يتطلّب
newDsl=falseفي الإصدار 9.0 من "المكوّن الإضافي لنظام Android Gradle" (Iaaac7، b/443311090) - توسيع إعدادات التتبُّع لتشمل حجم النواة (مثل صغير/كبير) في عمليات تتبُّع النظام/Perfetto التي تم تسجيلها في مقياس الأداء (I8e397، b/457469959)
تغييرات واجهة برمجة التطبيقات
- (في UiAutomator) تم تغيير
startActivitywait إلى wait for new window. (I35da6، b/440021797) - تثبيت واجهات برمجة التطبيقات
BlackHoleفي androidx.benchmark (I2b67e، b/451749438) - إضافة
@JvmOverloadsلإنشاء دوال إنشاء ملائمة لـPerfettoTraceRule(I1510a، b/443763207)
الإصدار 1.4
الإصدار 1.4.1
10 سبتمبر 2025
تم طرح androidx.benchmark:benchmark-*:1.4.1. يتضمّن الإصدار 1.4.1 هذه التعديلات.
إصلاح الأخطاء
- كانت عملية التتبُّع الثابت
perfettoSdkTracing=true(على سبيل المثال، عند تتبُّع Compose في اختبار أداء صغير) توقف العملية المستهدَفة إذا كانت قيد التشغيل ولم يتم تحديد StartupMode. (Ib2c1f)
الإصدار 1.4.0
30 يوليو 2025
تم طرح androidx.benchmark:benchmark-*:1.4.0. يتضمّن الإصدار 1.4.0 هذه التعديلات.
التغييرات المهمة منذ الإصدار 1.3.0
Microbenchmark
- تم نقل مهام Gradle
lockClocksوunlockClocksلتكون في مشاريع قياس الأداء، بدلاً من المستوى الأعلى، وذلك لضمان عزل مشاريع Gradle. - تمت إعادة تصميم
BenchmarkRuleليتم إنشاؤه استنادًا إلى الروتينات الفرعية، وليتيح سلوكًا أفضل فيyield(). من المفترض أن يحدّ ذلك بشكل كبير من خطر حدوث أخطاء ANR أثناء عمليات القياس، لا سيما عمليات التكامل المستمر الطويلة. ملاحظة: يجب تشغيل مقاييس أداء واجهة المستخدم باستخدامmeasureRepeatedOnMainThread
Macrobenchmark
- تمت إضافة حلّ بديل في الإصدار 34 من واجهة برمجة التطبيقات والإصدارات الأحدث، حيث كان أداء
CompilationMode.None()غير متسق بسبب تجميع ART للتطبيقات جزئيًا بعد التشغيل الأول. - ميزة تجريبية: يمكن أن توضّح ميزة "إحصاءات بدء التشغيل" بعض المشاكل الشائعة في اختبار Macrobenchmark لتطبيق قيد التشغيل من خلال تمرير
MacrobenchmarkRule(..., experimentalConfig = ExperimentalConfig(StartupInsightsConfig(isEnabled = true))). - تمت إضافة ArtMetric التي يمكن استخدامها لرصد عملية "الترجمة في الوقت المناسب" (JIT Compilation) وتحميل الفئات غير المحسَّن، وكلاهما مفيد للتحقّق من صحة تحسينات "ملف Baseline Profile".
ملفات Baseline Profile
- تجمع أداة
BaselineProfileRuleالآن الملفات الشخصية للتطبيقات المتعددة العمليات.
التغييرات الأخرى
- تم نقل TraceProcessor إلى مكتبة منفصلة (
androidx.benchmark:benchmark-traceprocessor) ليتم استخدامه خارج مقاييسMacrobenchmarkفي حالات أخرى. يمكن أيضًا تشغيله على Desktop JVM من خلال تحديد ServerLifecycleManager الخاص بك.
الإصدار 1.4.0-rc01
18 يونيو 2025
تم طرح androidx.benchmark:benchmark-*:1.4.0-rc01. يتضمّن الإصدار 1.4.0-rc01 هذه التعديلات.
إصلاح الأخطاء
- تمت إضافة حلّ بديل للمشاكل التي تتسبّب فيها صور وقت التشغيل والتي تؤدي إلى عدم قياس
CompilationMode.None()أسوأ أداء بعد التكرار الأول. لسوء الحظ، يتطلّب هذا الحلّ البديل تأخيرًا لمدة 5 ثوانٍ لإتلاف صورة وقت التشغيل عمدًا في بداية كل مجموعة اختبارات macrobenchmark (I4a4f1).
الإصدار 1.4.0-beta02
4 يونيو 2025
تم طرح androidx.benchmark:benchmark-*:1.4.0-beta02. يتضمّن الإصدار 1.4.0-beta02 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
- تمت إضافة
BaselineProfileConfig.Builderلتسهيل عملية استدعاءBaselineProfileRule.collectWithResults()لمطوّري Java. (I94905)
الإصدار 1.4.0-beta01
7 مايو 2025
تم طرح androidx.benchmark:benchmark-*:1.4.0-beta01. يتضمّن الإصدار 1.4.0-beta01 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
- تمت إضافة صيغة الدالة الإنشائية
PerfettoTraceRuleالتي تقبلPerfettoConfig(Ie53ba)
إصلاح الأخطاء
- تم تعديل تنسيق رابط إحصاءات بدء التشغيل
TraceProcessorلاستخدام المكوّن الإضافي الصحيح، وفاصل أكثر وضوحًا (:أقصر من%3A، وكلاهما متوافق) (Ie18ef) - استخدِم دائمًا خيار "إيقاف إجباري" لإيقاف العمليات، حتى عند الوصول إلى الجذر وإيقاف تطبيقات النظام. يحلّ هذا الإجراء الاستثناءات من النموذج:
Expected no stdout/stderr from killall ... No such process. (Idca2c)
المساهمة الخارجية
- تمت إضافة معالج استثناء الخادم الوكيل لـ
TraceProcessorHttpServer(I480f5)
الإصدار 1.4.0-alpha11
9 أبريل 2025
تم طرح androidx.benchmark:benchmark-*:1.4.0-alpha11. يتضمّن الإصدار 1.4.0-alpha11 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
- تم تغيير مهلة وسيطة
TraceProcessor: المدة إلى timeoutMs طويلة جدًا لتسهيل استخدامها من قِبل برنامج Java. (I9fbb5) - ضع علامة على الدالة الإنشائية
TraceProcessorباعتبارها دالة داخلية. يجب أن يستخدم مقدّمو الطلباتTraceProcessor.startServerأوTraceProcessor.runServer. (Ia8c5b)
إصلاح الأخطاء
- عند إيقاف التطبيق باستخدام
MacrobenchmarkScope.killProcess، تحقَّق من نتائج أمر الإيقاف لمنع حدوث خطأ بدون إشعار أو خطأ انتهاء المهلة. (I84555)
تحديثات الاعتماديات
- تستهدف هذه المكتبة الآن مستوى لغة Kotlin 2.0 وتتطلّب الإصدار 2.0.0 أو إصدارًا أحدث من KGP. (Idb6b5)
الإصدار 1.4.0-alpha10
26 مارس 2025
تم طرح androidx.benchmark:benchmark-*:1.4.0-alpha10. يتضمّن الإصدار 1.4.0-alpha10 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
- تمت زيادة المهلة التلقائية لتحميل خادم
TraceProcessorوالاستعلام إلى 120 ثانية (بدلاً من 60/30 ثانية سابقًا)، وأصبح من الممكن ضبط كليهما باستخدام مَعلمة مهلة واحدة. (Ifec87)
إصلاح الأخطاء
- تم إصلاح بعض المشاكل التي كانت تحدث عند قياس أداء تطبيق أو تسجيل ملفات شخصية له بدون
profileinstaller، وتم تضمينBroadcastReciever. يؤثر ذلك فقط في عمليات التشغيل على الأجهزة التي تم الوصول إلى جذرها. (Ied308)
الإصدار 1.4.0-alpha09
12 مارس 2025
تم طرح androidx.benchmark:benchmark-*:1.4.0-alpha09. يتضمّن الإصدار 1.4.0-alpha09 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
- تمت إضافة
TraceProcessorوSession API مع مقابض قابلة للإغلاق، وذلك لتسهيل الاستخدام مع دورات الحياة المخصّصة. هذه الخطوة هي أيضًا خطوة نحو تسهيل استخدام Coroutine وJava API. تم الآن وضع علامة "تجريبية" على وظائف الإضافة التي تعمل علىTraceProcessor.runServer {}، لأنّه من المحتمل أن يتم نقلها وإزالة العلامة "تجريبية" عنها في المستقبل. (I358b4)
إصلاح الأخطاء
- تم إصلاح مشكلة عدم عمل ميزة "قياس الأداء" و"البيانات الأساسية" مع واجهة برمجة التطبيقات 36 بسبب تغيير في
pgreptoybox يتطلّب الآن-aلعرض سطر الأوامر الكامل. (Idc991) - فلترة إعدادات التتبُّع التلقائية للحدّ من مخاطر فقدان البيانات في عمليات التتبُّع على مستويات أحدث من واجهة برمجة التطبيقات (I54e8a)
- تمت إضافة وسيط تجريبي
androidx.benchmark.killExistingPerfettoRecordingsللأدوات، ويمكن ضبطه علىfalseللسماح بمواصلة عملية تسجيل بيانات التتبُّع الحالية في Perfetto. يتم تلقائيًا إيقاف عمليات تسجيل التتبُّع الحالية في Perfetto على الجهاز لمنع حدوث تداخل. (I02a3c) - سيصبح الحقل
context.osCodenameAbbreviatedفي JSON الآنRELلإصدارات نظام التشغيل التي تم طرحها بالمستوى 35 لواجهة برمجة التطبيقات والإصدارات الأحدث، لأنّ المنصة الأساسية لم تعُد تتوافق مع أسماء الرموز غير الرقمية. (Ib17fd) - تم إصلاح عُطل في
FrameTimingMetricعند حدوث إطارات تمت إعادة مزامنتها. (I7c6f4، b/394610806) - لم يعُد يُفترض أنّ
Choreographer#doFrameهو أعلى إطار تسلسل استدعاء الدوال البرمجية في سلسلة التعليمات البرمجية الرئيسية لتطبيقFrameTimingQuery. (Iee0e0، b/340206285)
الإصدار 1.4.0-alpha08
12 فبراير 2025
تم طرح androidx.benchmark:benchmark-*:1.4.0-alpha08. يتضمّن الإصدار 1.4.0-alpha08 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
- تم نقل واجهات برمجة التطبيقات الخاصة بالإضافات
TraceProcessor.runSession()لتصبح تجريبية، لأنّه من المحتمل أن يتم نقلها لتصبح أدوات إنشاء ملموسة في النهاية على Android. (Ib0528، b/393640753) - أصبحت معظم عمليات تنفيذ "إحصاءات بدء التشغيل" متاحة الآن للجميع أو تجريبية، وتم نقلها إلى العنصر
TraceProcessor، راجِعStartupInsights. (I0aa00) - إيقاف
BenchmarkRule.runWithTimingDisabled {}نهائيًا واستخدامBenchmarkRule.runWithMeasurementDisabled {}بدلاً منه، لأنّه يصف السلوك بشكلٍ أوضح، أي أنّه يتم إيقاف جميع المقاييس مؤقتًا. بالإضافة إلى ذلك، يجب عرض الفئة الرئيسيةMicrobenchmarkScopeلأنّه لا يمكن إعادة تعريف الدالةrunWithMeasurementDisabledلفتح الوصول، لأنّها مضمّنة. (I9e23b، b/389149423، b/149979716) - تم نقل مكتبات قياس الأداء إلى Kotlin 2.0. (I9d1e0)
- تمت إزالة وسيطة أداة القياس
androidx.benchmark.startupProfiles.enable. لم يعُد هذا الخيار مفيدًا، إذ يمكن التحكّم فيه باستخدام الوسيطةincludeInStartupProfileفيBaselineProfileRule.collect(). (I39eb4)
إصلاح الأخطاء
- تم تقليل عدد الدوال الداخلية التي يتم استدعاؤها في Microbenchmark أثناء إنشاء الملفات الشخصية لتوضيح "عمليات تتبُّع الطرق" مثلاً (Ifaed8)
- إصلاح تجريبي للأعطال: "تعذّر إيقاف [
ProcessPid(processName=perfetto, pid=...)]". سيسجّل تطبيق Benchmark الآن رسالة بدلاً من تعطُّله عندما يتعذّر إيقاف عملية Perfetto في الخلفية قبل تشغيل مقياس الأداء. (I37d3e، b/323601788) - تم إصلاح الخطأ
IllegalStateExceptionsالذي يحمل التصنيف "Expectedpm dump-profilesstdout" والذي نتج عن التدقيق الصارم في تنسيق الناتج. (I358dc)
الإصدار 1.4.0-alpha07
29 يناير 2025
تم طرح androidx.benchmark:benchmark-*:1.4.0-alpha07. يتضمّن الإصدار 1.4.0-alpha07 هذه التعديلات.
الميزات الجديدة
- تقدّم
BaselineProfileRuleالآن واجهة برمجة التطبيقاتcollectWithResults(...)التي تتضمّن قائمة بمسارات الملفات الشخصية المحسوبة. (I056f8) - تمت إضافة وسيط قياس حالة التطبيق
androidx.benchmark.measureRepeatedOnMainThread.throwOnDeadline، ويمكن ضبطه على "خطأ" لإيقاف السلوك الذي يظهر عند انتهاء المهلة فيmeasureRepeatedOnMainThreadلإجراء الاختبارات المحلية. لا يُنصح بذلك في الحالات الأخرى، لأنّ ذلك يزيد من احتمالية حدوث أخطاء ANR أثناء الاختبارات. (Idbeec، b/353226476)
تغييرات واجهة برمجة التطبيقات
- تمت إضافة
@JvmOverloadsإلى الدالة الإنشائيةMicrobenchmarkConfig. (I13fd3) - تمت إعادة تصميم
BenchmarkRuleليتم إنشاؤه استنادًا إلى الروتينات الفرعية، وليتيح سلوكًا أفضل فيyield(). أدت عملية إعادة التصميم هذه إلى إزالة العديد من واجهات برمجة التطبيقات التجريبيةBenchmarkState، ولكن سيتم استبدالها حسب الحاجة. بالإضافة إلى ذلك، أضفناrunWithMeasurementDisabledلتوضيح السلوك (يتم إيقاف جميع عمليات القياس مؤقتًا). في المستقبل، سيتم إيقاف سياسة "runWithTimingDisabled" نهائيًا. (I19837، b/389149423، b/311242861) - انقل
PerfettoTraceProcessorإلىTraceProcessorفي عنصرandroidx.benchmark:benchmark-traceprocessorجديد، واجعل معظم واجهة برمجة التطبيقات غير تجريبية. يجب تعديل أيTraceMetricمخصّص أو أي شيء يقرأ من عمليات التتبُّع لاستخدام عملية استيرادTraceProcessorالجديدة. تعمل واجهة برمجة التطبيقات الجديدةTraceProcessorتمامًا مثل واجهة برمجة التطبيقات القديمة، ولكنّها مكتبة واجهة مستقلة (تشبه إلى حد ما طبقةandroidx.sqliteمن Room) تتضمّن عملية تنفيذ خاصة بنظام Android ومضمّنة في Macrobenchmark. يمكن استخدام العنصر الجديد على JVM أيضًا، ولكن عليك حاليًا بدء نسختك الخاصة من ثنائيTraceProcessorوتقديم منفذ للاتصال به. (I3a767، I62563، b/381134564)
إصلاح الأخطاء
- عرض رسالة خطأ أوضح عند تعذُّر تشغيل العملية المستهدَفة في
MacrobenchmarkScope.startActivityAndWait(ربما بسبب تعطُّل العملية المستهدَفة)، بدلاً من الرسالة الأكثر غموضًا "تعذُّر تأكيد اكتمال تشغيل النشاط" (I3539b) - تم إصلاح العديد من أخطاء البنية في أمثلة Kotlin، وتمييز البنية في العديد من أمثلة Java / build.gradle. (Ib3808)
- تم توضيح مستندات المَعلمتَين
ArtMetricوCaptureInfo. (I96e60)
الإصدار 1.4.0-alpha06
11 ديسمبر 2024
تم طرح androidx.benchmark:benchmark-*:1.4.0-alpha06. يتضمّن الإصدار 1.4.0-alpha06 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
- تمت إزالة استخدام
@Language("sql")فيPerfettoTraceProcessor.Session.query()لأنّ ميزة التمييز/التحليل في "استوديو Android" لا تعمل. (Idc2fa، b/377733398)
إصلاح الأخطاء
- تستخدم هذه المكتبة الآن تعليقات توضيحية بشأن القيم الخالية من JSpecify، وهي تعليقات توضيحية خاصة باستخدام النوع. على مطوّري Kotlin استخدام وسيطة المترجم البرمجي التالية لفرض الاستخدام الصحيح:
-Xjspecify-annotations=strict(هذه هي القيمة التلقائية بدءًا من الإصدار 2.1.0 من مترجم Kotlin البرمجي). (I46810، b/326456246) - تم تصحيح
ArtMetricللإبلاغ عن تحميل الفئة (وليس تهيئتها)، وتم تحسين المستندات لتوضيح سلوك وقت التشغيل. (I9915c) - في ميزة "المستخدمون المتعدّدون" على Android، نفِّذ الأوامر بصفتك مستخدمًا رئيسيًا على الأجهزة التي تم الوصول إلى جذرها فقط. (I88b44)
الإصدار 1.4.0-alpha05
13 نوفمبر 2024
تم طرح androidx.benchmark:benchmark-*:1.4.0-alpha05. يتضمّن الإصدار 1.4.0-alpha05 هذه التعديلات.
إصلاح الأخطاء
- تم إصلاح مشكلة في الإصدار 34 من واجهة برمجة التطبيقات (API) أو الإصدارات الأحدث، حيث كان أداء
CompilationMode.None()غير متسق ولا يمثّل الأداء الأولي في أسوأ الحالات. يحلّ هذا الإجراء مشكلة تغيير في النظام الأساسي يسمح لحالة تجميع ARTverifyبتجميع التطبيقات جزئيًا (يؤثر فقط في تحميل الفئات) بعد فترة قصيرة من التشغيل الأول. (Ie48d0) - تم إصلاح المشكلة التي كان يمكن فيها تسجيل عمليات تتبُّع (قصيرة بشكل خاص) لا تعرض قياسات من مقاييس Macrobenchmark المضمّنة، وذلك بسبب اقتطاع اسم العملية ضِمن عملية تتبُّع Perfetto. تعمل مكتبة Macrobenchmark الآن على حلّ هذه المشكلة من خلال البحث عن اسم الحزمة المختصَر في جميع طلبات البحث المضمّنة، بالإضافة إلى اسم الحزمة المتوقّع. يُرجى العِلم أنّ عمليات التنفيذ المخصّصة
TraceMetricأو أدوات الاتصال المباشر الأخرى بـPerfettoSession.queryيمكنها تنفيذ السلوك نفسه من خلال تغييرprocess.name LIKE "$packageName"في طلب بحث Perfetto إلى(process.name LIKE "$packageName" OR process.name LIKE "$(packageName.takeLast(15))")بدلاً من ذلك. (I5bf01، b/377565760)
الإصدار 1.4.0-alpha04
30 أكتوبر 2024
تم طرح androidx.benchmark:benchmark-*:1.4.0-alpha04. يتضمّن الإصدار 1.4.0-alpha04 هذه التعديلات.
الميزات الجديدة
- (تجريبي) تفعيل إنشاء "ملف تعريف الأداء الأساسي" وقياس الأداء في التطبيقات المثبَّتة على مستخدم ثانوي، مثل أي تطبيق على أجهزة Android Auto غير المزودة بشاشة تم اختبار هذه الميزة في بعض السيناريوهات، ولكن يُرجى إعلامنا إذا لم تنجح معك من خلال الإبلاغ عن خطأ. (I9fcbe وb/356684617 وb/373641155)
إصلاح الأخطاء
- يتم الآن دائمًا تجاهل قيمة
isProfileableفي إصدارات قياس الأداء، كما يتم الآن دائمًا تجاهل قيمةisDebuggableفي كل من إصدارات قياس الأداء وإصداراتnonMinified(التقاط بيانات الملف الأساسي). (I487fa، b/369213505) - إصلاح عملية رصد التجميع على بعض الأجهزة الفعلية التي تعمل بإصدار أقدم من المستوى 28 لواجهة برمجة التطبيقات، ما يؤثر في json
context.compilationMode، بالإضافة إلى سلوكandroidx.benchmark.requireAot=true(الذي لم يعُد يعرض خطأ بشكل غير صحيح) (Ic3e08، b/374362482) - في مقاييس
CpuEventCounter، يتم عرض خطأ في حال رصد قياسات غير صالحة (مثل instructions/cpucycles==0) (I8c503)
الإصدار 1.4.0-alpha03
16 أكتوبر 2024
تم طرح androidx.benchmark:benchmark-*:1.4.0-alpha03. يتضمّن الإصدار 1.4.0-alpha03 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
- Macrobenchmark: إضافة
ArtMetric، التي يمكن استخدامها لفحص تغطية الملف الشخصي أو أداء Android RunTime العام. تسجّل هذه السمة عدد عمليات JIT وإجمالي مدتها، وعمليات تهيئة الفئة (حيثما كان ذلك متاحًا)، وعمليات التحقّق من الفئة. بالإضافة إلى ذلك، تم إجراء تغييرات علىCaptureInfoلتضمين إصدار ART الرئيسي الاختياري مع الإعداد التلقائي. (I930f7) - أضِف
coefficientOfVariationإلى ناتج JSON الخاص بمقياس الأداء لعرض الثبات ضمن عملية تنفيذ مقياس أداء معيّن. (Ib14ea)
إصلاح الأخطاء
- تم إصلاح الخطأ
CollectBaselineProfileTaskعندما يحتوي جهاز AVD على مسافات. (Ia0225، b/371642809) - إصلاح تخميني للأخطاء الناتجة عن استثناءات
StartupMode.COLD:Package <packagename> must not be running prior to cold start!. الآن، ستنتظرMacrobenchmarkScope.killProcess()(بما في ذلك تلك التي يتم تنفيذها قبل كل تكرار، والتي تُستخدَم لتنفيذ سلوكStartupMode.COLD) للتأكّد من توقّف جميع عمليات التطبيق عن التنفيذ. (I60aa6، b/351582215) - تم إصلاح المشكلة التي كانت تتسبب في ظهور الخطأ UNLOCKED_ على بعض المحاكيات التي تم الوصول إلى جذرها. (Ic5117)
- تستخدم هذه المكتبة الآن تعليقات توضيحية بشأن القيم الخالية من JSpecify، وهي تعليقات توضيحية خاصة باستخدام النوع. على مطوّري Kotlin استخدام وسيطة المترجم البرمجي التالية لفرض الاستخدام الصحيح:
-Xjspecify-annotations=strict(هذه هي القيمة التلقائية بدءًا من الإصدار 2.1.0 من مترجم Kotlin البرمجي). (I7104f، b/326456246)
الإصدار 1.4.0-alpha02
2 أكتوبر 2024
تم طرح androidx.benchmark:benchmark-*:1.4.0-alpha02. يتضمّن الإصدار 1.4.0-alpha02 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
- تم نقل مهام Gradle
lockClocksوunlockClocksإلى مشاريع قياس الأداء، بدلاً من توفيرها على المستوى الأعلى. كان هذا التغيير ضروريًا لأنّه ليس هناك للأسف طريقة لتسجيل هذه الإجراءات كإجراءات على مستوى أعلى بدون إيقاف عزل المشاريع. (I02b8f، b/363325823)
إصلاح الأخطاء
- تجمع أداة
BaselineProfileRuleالآن الملفات الشخصية للتطبيقات المتعددة العمليات من خلال إرسال إشارة إلى كل عملية قيد التشغيل في نهاية الحظر لتفريغ الملفات الشخصية. إذا لم يتمكّن تجميع البيانات المستند إلى الملف الشخصي من العثور على عملية للبث إليها، سيتعذّر التجميع، لأنّه من غير المتوقّع أن تتضمّن البيانات ملفًا شخصيًا. بالإضافة إلى ذلك، تمت إضافة وسيطة أدوات لتحديد مدة انتظار التفريغ:androidx.benchmark.saveProfileWaitMillis(I0f519، b/366231469) - من Benchmark
1.3.2: تم إصلاح مشكلة عدم قدرة "مركز الاختبار الافتراضي لمنصة Firebase" (FTL) على سحب ملفات نتائج "الملف الأساسي" أو Macrobenchmark من Baseline Profile Gradle Plugin. (I2f678، b/285187547)
لاستخدام FTL، طبِّق المكوّن الإضافي على وحدة ملفات تعريف خط الأساس في حزمة المكوّن الإضافي، مع:
plugins {
...
id("com.google.firebase.testlab")
}
ثم اضبط إعدادات مركز الاختبار الافتراضي لمنصة Firebase باستخدام:
firebaseTestLab {
// Credentials for FTL service
serviceAccountCredentials.set(file("credentials.json"))
// Creates one or more managed devices to run the tests on.
managedDevices {
"ftlDeviceShiba34" {
device = "shiba"
apiLevel = 34
}
}
// Ensures the baseline profile is pulled from the device.
// Note that this will be automated as well later with aosp/3272935.
testOptions {
results {
directoriesToPull.addAll("/storage/emulated/0/Android/media/${android.namespace}")
}
}
}
يجب أيضًا إضافة جهاز FTL الذي تم إنشاؤه إلى إضافة ملف التعريف الأساسي:
baselineProfile {
managedDevices += "ftlDeviceShiba34"
useConnectedDevices = false
}
الإصدار 1.4.0-alpha01
18 سبتمبر 2024
تم طرح androidx.benchmark:benchmark-*:1.4.0-alpha01. يتضمّن الإصدار 1.4.0-alpha01 هذه التعديلات.
ميزة جديدة: إحصاءات بدء تشغيل التطبيق
- يمكن تفعيل الإصدار الأوّلي من إحصاءات بدء تشغيل التطبيق في Macrobenchmark. (09fae38)
لتفعيلها في مقياس أداء الشركات الناشئة، اتّبِع الخطوات التالية:
@Test
fun startup {
macrobenchmarkRule.measureRepeated(
…
packageName = "com.example.my.application.id"
metrics = listOf(StartupTimingMetric()),
iterations = 5,
startupMode = StartupMode.COLD,
compilationMode = CompilationMode.None(),
experimentalConfig = ExperimentalConfig(startupInsightsConfig = StartupInsightsConfig(isEnabled = true))
) {
scope.startActivityAndWait(...)
}
}
بعد ذلك، سيحلّل مقياس أداء بدء التشغيل التتبُّع بحثًا عن المشاكل الشائعة، وسيطبعها بعد المقاييس في ناتج اختبار "استوديو Android" ضمن علامة التبويب "مقياس الأداء"، على سبيل المثال:
StartupBenchmark_startup[startup=COLD,compilationMode=None]
├── Metrics
│ ├── timeToFullDisplayMs min 1,147.2, median 1,208.8, max 1,307.4
│ └── timeToInitialDisplayMs min 1,147.2, median 1,208.8, max 1,307.4
├── App Startup Insights
│ ├── App in debuggable mode (expected: false)
│ │ └── seen in iterations: 0(true) 1(true) 2(true) 3(true) 4(true) 5(true) 6(true) 7(true) 8(true) 9(true)
│ ├── Potential CPU contention with another process (expected: < 100000000ns)
│ │ └── seen in iterations: 4(105022546ns)
│ └── Main Thread - Binder transactions blocked (expected: false)
│ └── seen in iterations: 7(true)
└── Traces
└── Iteration 0 1 2 3 4 5 6 7 8 9
لا تزال هذه الميزة قيد التطوير، وسنعمل على تحسين المستندات وإمكانية التوسيع في المستقبل، ولكن نرحّب بتلقّي ملاحظاتك.
الميزات الجديدة
- تمت إضافة السمة gradle
androidx.baselineprofile.suppressWarningsلإيقاف جميع تحذيرات ملفات تعريف الأداء الأساسية. (314153a) - يتم الآن عرض مقاييس الاختبارات المصغّرة في عمليات تتبُّع Perfetto كعدادات. (3214854)
- إضافة نصوص برمجية تجريبية لإيقاف التحويل في الوقت المناسب (يتطلّب الوصول إلى الجذر أو إعادة تشغيل وقت التشغيل) وإعادة ضبط حالة الأداء/الاختبار للجهاز لا يتم نشرها حاليًا كمهام Gradle. (7c3732b)
- تمت إضافة وسيطة قياس الأداء لتخطّي الاختبارات عند التشغيل على المحاكي. عند تفعيل الإصدار
automaticGenerationDuring، سيتم أيضًا تشغيل مقاييس الأداء لإنشاء ملف تعريف أساسي. سيحدث خطأ في هذه الحالة إذا تم استخدام المحاكيات. باستخدام الوسيطة الجديدةskipBenchmarksOnEmulator، يمكننا بدلاً من ذلك تخطّي الاختبار. (0c2ddcd) - تغيير منطق تفعيل حدث الأداء ليتم تشغيله على الإصدار 23 من واجهة برمجة التطبيقات أو الإصدارات الأحدث (2550048)
تغييرات واجهة برمجة التطبيقات
- تم نقل وسيطة
PerfettoConfigالتجريبية الحالية إلىMacrobenchmarkRule.measureRepeated()إلى عنصرExperimentalConfigالجديد.
إصلاح الأخطاء
- زيادة عدد محاولات إعادة التشغيل
lockClocks.sh(99e9dac) - لا تُنشئ أنواع إصدارات
nonMinifiedوقياس الأداء إذا كانت متوفّرة. بسبب خطأ، كان سيتم إعادة إنشاء نوعَي الإصدارnonMinifiedوإصدارات قياس الأداء حتى إذا كانا متوفّرَين. (e75f0a5) - تجاهل الشرائح غير المنتهية من نتائج
TraceSectionMetric(a927d20) - تحسين عملية التحقّق من المحاكي لتضمين البادئة
sdk_(1587de8) - اعتبار الحِزم غير النشطة على أنّها تمت إزالتها في
FrameTimingGfxInfoMetric(35cc79c) - تم إصلاح الخطأ الذي يؤدي إلى إنشاء قيم تالفة للأحداث غير المرتبطة بالتعليمات البرمجية.
androidx.benchmark.cpuEventCounter(06edd59) - إصلاح
resumeTiming/runWithTimingDisabledليتوافق مع ترتيب أولوية المقاييس، وتقليل تأثير إيقاف/استئناف المقياس الأقل أولوية بشكل كبير على نتائج المقياس الأعلى أولوية على سبيل المثال، في حال استخدام عدّادات أداء وحدة المعالجة المركزية من خلال وسيطةcpuEventCounter.enable، لن يتم تقليل قيمة timeNs بشكل كبير عند الإيقاف المؤقت/الاستئناف. (5de0968)
الإصدار 1.3
الإصدار 1.3.4
26 مارس 2025
تم طرح androidx.benchmark:benchmark-*:1.3.4. يتضمّن الإصدار 1.3.4 هذه التعديلات.
إصلاح الأخطاء
- تم إصلاح حالات عدم التوافق مع ميزة "عزل مشاريع Gradle" في "المكوّن الإضافي لنظام Gradle الخاص بـ Benchmark Baseline". (b/404523257)
الإصدار 1.3.3
16 أكتوبر 2024
تم طرح androidx.benchmark:benchmark-*:1.3.3. يتضمّن الإصدار 1.3.3 هذه التعديلات.
إصلاح الأخطاء
- تم إصلاح الخطأ
CollectBaselineProfileTaskعندما يحتوي جهاز AVD على مسافات (Ia0225، b/371642809)
الإصدار 1.3.2
2 أكتوبر 2024
تم طرح androidx.benchmark:benchmark-*:1.3.2. يتضمّن الإصدار 1.3.2 هذه التعديلات.
إصلاح الأخطاء
- تم إصلاح مشكلة عدم قدرة "مركز الاختبار الافتراضي لمنصة Firebase" (FTL) على سحب ملفات نتائج "ملف تعريف المرجع" أو Macrobenchmark من Baseline Profile Gradle Plugin. (I2f678، b/285187547)
لاستخدام FTL، طبِّق المكوّن الإضافي على وحدة ملفات تعريف خط الأساس في حزمة المكوّن الإضافي، مع:
plugins {
...
id("com.google.firebase.testlab")
}
ثم اضبط إعدادات مركز الاختبار الافتراضي لمنصة Firebase باستخدام:
firebaseTestLab {
// Credentials for FTL service
serviceAccountCredentials.set(file("credentials.json"))
// Creates one or more managed devices to run the tests on.
managedDevices {
"ftlDeviceShiba34" {
device = "shiba"
apiLevel = 34
}
}
// Ensures the baseline profile is pulled from the device.
// Note that this will be automated as well later with aosp/3272935.
testOptions {
results {
directoriesToPull.addAll("/storage/emulated/0/Android/media/${android.namespace}")
}
}
}
يجب أيضًا إضافة جهاز FTL الذي تم إنشاؤه إلى إضافة ملف التعريف الأساسي:
baselineProfile {
managedDevices += "ftlDeviceShiba34"
useConnectedDevices = false
}
الإصدار 1.3.1
18 سبتمبر 2024
تم طرح androidx.benchmark:benchmark-*:1.3.1. يتضمّن الإصدار 1.3.1 على هذه التعديلات.
إصلاح الأخطاء
- تمت إضافة السمة
androidx.baselineprofile.suppressWarningsفي Gradle لإيقاف جميع تحذيرات ملفات تعريف خط الأساس (I7c36e، b/349646646) - تم إصلاح Baseline Profile Gradle Plugin لاستخدام
nonMinified…وbenchmark…المتوفّرة مسبقًا إذا أنشأها التطبيق بدلاً من إنشاء برامج تضمين. (Ia8934، b/361370179) - تم إصلاح
java.lang.AssertionError: ERRORS (not suppressed): EMULATORعند تفعيلautomaticGenerationDuringBuildعلى المحاكيات. يتم استخدام وسيطة جديدة بدلاً من ذلك لتخطّي الاختبار. (If3f51، b/355515798) - تصغير اختبارات الأداء الدقيقة - الاحتفاظ بالفئات الفرعية من
org.junit.runner.notification.RunListenerفي مكتبة اختبار الأداء Proguard (Ic8ed5، b/354264743) - تم إصلاح الخطأ
TraceSectionMetricلتجاهل الشرائح غير المنتهية. في السابق، كان يتم اعتبار أنّ مدة هذه الفيديوهات هي -1، مثلاً أثناء عملية الجمع أو البحث عن الحد الأدنى للمدة. (If74b7) - تم إصلاح مشكلة في
FrameTimingGfxInfoMetricكانت تتسبّب في تعطُّل بدء المقياس إذا لم تكن العملية قيد التشغيل. (I6e412)
الإصدار 1.3.0
21 أغسطس 2024
تم طرح androidx.benchmark:benchmark-*:1.3.0. يتضمّن الإصدار 1.3.0 هذه التعديلات.
التغييرات في مكتبة Microbenchmark منذ الإصدار 1.2.0
- تكون ميزة "تتبُّع الأسلوب" مفعَّلة تلقائيًا في اختبارات الأداء الدقيق عند تشغيلها على معظم الأجهزة
- يتم تنفيذ تتبُّع الطرق كمرحلة منفصلة بعد القياسات، ما يتيح إخراج القياسات وتتبُّع الطرق من عملية قياس أداء واحدة.
- سيؤثّر تتبُّع الطرق في بعض إصدارات نظام التشغيل Android وART في مراحل القياس اللاحقة. وفي هذه الإصدارات، يكون تتبُّع الطرق غير مفعّل تلقائيًا ويتم عرض تحذير في ناتج Studio.
- مقاييس أداء سلسلة التعليمات الرئيسية وأخطاء ANR
- تمت إضافة
measureRepeatedOnMainThreadلمقاييس أداء سلسلة محادثات واجهة المستخدِم (مثل تلك التي تتفاعل مع واجهات مستخدِم Compose/View) لتجنُّب أخطاء ANR عند التشغيل لعدة ثوانٍ. - يتم تخطّي عمليات تتبُّع الطرق إذا كان من المتوقّع أن تتجاوز الموعد النهائي لتجنُّب خطأ ANR. اضبط القيمة على
androidx.benchmark.profiling.skipWhenDurationRisksAnrعلى "خطأ" لإيقاف هذا السلوك (لا يُنصح بذلك في عمليات التكامل المستمر، لأنّ أخطاء ANR يمكن أن تتسبّب في حدوث مشاكل في عمليات التكامل المستمر الطويلة).
- تمت إضافة
- إزالة البيانات غير الضرورية
- قواعد Proguard المضمّنة لتحسين قياس الأداء الدقيق مع تفعيل التصغير
- يتطلّب تصغير الرموز/R8 في وحدة مكتبة الإصدار 8.3 من المكوّن الإضافي لنظام Gradle المتوافق مع Android (AGP)، ويمكن تفعيله من خلال
android.buildTypes.release.androidTest.enableMinificationفيbuild.gradle - تمت إضافة واجهة برمجة التطبيقات التجريبية
BlackHole.consume()لمنع إزالة الرمز غير النشط (If6812، b/286091643)
- المقاييس
- ميزة عدّاد أحداث وحدة المعالجة المركزية التجريبية (المقاييس من
perf_event_open، والتي تتطلّب الوصول إلى الجذر على معظم إصدارات النظام الأساسي)، وإمكانية الوصول من خلالInstrumentationArgumentandroidx.benchmark.cpuEventCounter.enable(يمكن ضبطها علىtrue)، ويمكن ضبطandroidx.benchmark.cpuEventCounter.eventsمثلاً على (Instructions,CpuCycles). من المفترض أن تكون هذه الميزة متاحة على بعض المحاكيات التي تتضمّن إصدارات userdebug، ولكن لم يتم اختبارها على جميع المحاكيات المتاحة
- ميزة عدّاد أحداث وحدة المعالجة المركزية التجريبية (المقاييس من
التغييرات في MACRObenchmark منذ الإصدار 1.2.0
- إصلاح شامل لتتبُّع الطرق في اختبارات الأداء الشاملة
- يتم الآن تحديد نطاق عمليات تتبُّع الطرق بمدة
measureBlock، ويمكنها تسجيل جلسات متعددة إذا بدأت العملية عدة مرات. - في السابق، لم يكن تتبُّع طريقة الأداء يعمل إلا مع مقاييس
StartupMode.COLD، ولم يكن يسجّل أي بيانات عنmeasureBlocksالتي لم تتم إعادة تشغيل العملية المستهدَفة فيها. - يتم إفراغ عمليات تتبُّع الدوال البرمجية الثابتة في Macrobenchmark، لذا من المفترض أن يتم تسجيل عمليات تتبُّع الدوال البرمجية بالكامل وأن تكون صالحة، حتى على الأجهزة الأبطأ. (I6349a، b/329904950)
- يتم الآن تحديد نطاق عمليات تتبُّع الطرق بمدة
- تفريغ ملف ART الشخصي بشكل صحيح أثناء تكرار
warmUpالفردي عند إيقاف العملية، ما يؤدي إلى زيادة دقة قياساتCompilationMode.Partial(warmup=N)(I17923) - رسالة الخطأ في بث Drop Shader
- تمت إضافة اقتراحات لتصحيح الأخطاء إلى رسالة الخطأ المتعلقة بعدم بث برنامج تظليل
- إضافة وسيطتَي أدوات القياس لتجاوز سلوك حذف التظليل من أجل حلّ الأعطال عند قياس أداء التطبيقات التي لا تتضمّن
ProfileInstaller1.3:-
androidx.benchmark.dropShaders.enable=true/false: يمكن استخدامها لتخطّي جميع عمليات إزالة تظليل الأشكال (بما في ذلك تلك التي تتم في عمليات إطلاقStartupMode.Cold)، خاصةً عند قياس أداء التطبيقات التي لم تستخدم بعد الإصدار 1.3 من profileinstaller - يمكن استخدام
androidx.benchmark.dropShaders.throwOnFailure=true/falseلتحمّل حالات الأعطال عند محاولة إيقاف برامج التظليل، مثلاً عند قياس أداء التطبيقات بدون الإصدار 1.3 من profileinstaller (I4f573).
-
- تمت إضافة صيغة تجريبية
MacrobenchmarkRule#measureRepeatedتستخدمPerfettoConfigمخصّصًا لتسجيل بيانات تتبُّع Perfetto مخصّصة بالكامل. يُرجى العِلم أنّ الإعدادات التي تم ضبطها بشكل غير صحيح قد تؤدي إلى تعذُّر عمل فئات المقاييس المضمّنة. (Idfd3d، b/309841164، b/304038384) - ألغِ مهام dexopt في الخلفية قبل تشغيل Macrobenchmark لتقليل التشويش. (I989ed)
- تنتظر مكتبة Macrobenchmark الآن لمدة ثانية واحدة حتى يمحو التطبيق المستهدف ملف ART (كانت المدة سابقًا 500 ملي ثانية). (I85a50، b/316082056)
- إصلاح شامل لـ TraceSectionMetric
- ملاحظة: يمكن أن تؤثّر التغييرات الواردة أدناه في مخرجات استخدام CI، وقد تؤدي إلى حدوث انقطاعات أو تعذُّر التحليل.
TraceSectionMetric - أصبح المجموع هو القيمة التلقائية، لأنّ معظم استخدامات هذا المقياس تكون للأحداث المتكرّرة، وسيؤدي الخيار "الأول" إلى تجاهل البيانات في هذه الحالات
- تم تغييرها لتصبح قابلة للتخصيص بشكل أكبر، مع توفّر المزيد من الأوضاع
- تم الآن تضمين أسماء الأوضاع في اسم ناتج المقياس (في "استوديو YouTube" وJSON)
- يتيح الآن استخدام الشرائح التي تم إنشاؤها باستخدام
Trace.{begin|end}AsyncSection.
- ملاحظة: يمكن أن تؤثّر التغييرات الواردة أدناه في مخرجات استخدام CI، وقد تؤدي إلى حدوث انقطاعات أو تعذُّر التحليل.
- المقاييس
- الطاقة - تمت إضافة
PowerMetric.deviceSupportsHighPrecisionTrackingوPowerMetric.deviceBatteryHasMinimumCharge()وPowerMetric.deviceSupportsPowerEnergy() - تمت إعادة تسمية
Metric.getResultإلىgetMeasurementsلتتطابق مع نوع القيمة المعروضة - تمت إضافة تصنيفات log.w / exception إلى جميع حالات تعذُّر رصد بدء التشغيل. لا يؤدي ذلك إلى تغيير السلوك الحالي (لذا سيتم عرض بعض الأخطاء، بينما يتعذّر على البعض الآخر رصد بدء التشغيل بدون إشعار)، بل يجعله أكثر وضوحًا. بشكل عام، تلك التي
Log.w()ولا يمكنها تسجيل مقاييس بدء التشغيل هي تلك التي لا تتضمّن أحداثًا غير مرتبطة بإطارات، ويتم طرح استثناءات عند رصد بدء التشغيل باستثناء معلومات توقيت الإطارات (من شرائح واجهة المستخدم/وقت التشغيل). (Id240f، b/329145809) - تمت إضافة مقياس
frameCountإلىFrameTimingMetricللمساعدة في رصد السيناريوهات التي تتغير فيها القياسات بسبب تغيُّر عدد اللقطات التي تم إنتاجها (تمت إضافة صور متحركة جديدة، وتم إصلاح مشاكل الإبطال). (I1e5aa) - تم توضيح أنّ
frameOverrunMsهو المقياس المفضّل للتتبُّع عند توفّره في المستندات، وسبب ذلك. (I18749، b/329478323) - تم إصلاح المشكلة التي يمكن فيها إقران اللقطات غير المنتهية في بداية التتبُّع ونهايته، ما يؤدي إلى تسجيلها بشكل غير صحيح على أنّها لقطة واحدة طويلة جدًا. (I39353، b/322232828)
- تحسين الخطأ
FrameTimingMetricعند عدم إنشاء إطارات، وعرض رابط دائمًا لتتبُّع المشكلة عند تعذُّر تحليل المقاييس للمساعدة في تشخيص المشكلة (I956b9) - تم إصلاح عُطل في
FrameTimingMetricبسبب تعذُّر تحليل رقم تعريف الإطار، خاصةً على بعض أجهزة المصنّعين الأصليين للأجهزة. (Ia24bc، b/303823815، b/306235276) - تم تخفيف صرامة عمليات التحقّق في
FrameMetrics، وأضفنا المزيد من التفاصيل إلى رسائل الخطأ. (Iadede)
- الطاقة - تمت إضافة
تغييرات على المكوّن الإضافي Gradle منذ الإصدار 1.2.0 في ما يتعلّق بتسجيل "ملف تعريف المرجع"
- تمت زيادة الحد الأقصى للإصدار المقترَح من "المكوّن الإضافي لنظام Gradle المتوافق مع Android" إلى 9.0.0-alpha01.
- تأكَّد من أنّ مهمتَي
mergeArtProfileوmergeStartupProfileتنتظران دائمًا اكتمال إنشاء ملف تعريف الأداء الأساسي. (I623d6، b/343086054) - سيؤدي إنشاء ملف أساسي بنجاح إلى عرض ملخّص للتغييرات التي تم إجراؤها (I824c8 وb/269484510).
- تمت إضافة DSL لإيقاف التحذيرات (Ic4deb، b/331237001)
- يجب حلّ المشكلة لضمان استخدام مقاييس الأداء لملفات تعريف أساسية تم إنشاؤها عندما تكون قيمة
automaticGenerationDuringBuildغير مفعّلة (Ic144f، b/333024280) - إصلاح عمليات إلغاء خصائص إضافة Gradle لتفعيل إنشاء ملفات تعريف أساسية وقياس الأداء عند تخصيص
nonMinifiedأو نوع إصدار قياس الأداءBaselineProfile(Ib8f05، b/324837887) - إصلاح مشكلة تضمين ملفات تعريف خط الأساس للمكتبة في ملف AAR قبل الإصدار 8.3.0-alpha15 من المكوّن الإضافي لنظام Gradle المتوافق مع Android (I1d2af، b/313992099)
- تم إصلاح عنوان URL الأساسي وملف تعريف بدء التشغيل في نهاية مهمة الإنشاء. (I802e5، b/313976958)
التغييرات المهمة الأخرى منذ الإصدار 1.2.0
- التقاط بيانات التتبُّع
- تم تقليل الخطأ EXITCODE 2 عند بدء تشغيل Perfetto من خطأ إلى تحذير مسجّل
- تفعيل تتبُّع AIDL تلقائيًا في مقاييس الأداء(يتطلّب الإصدار 28 من واجهة برمجة التطبيقات) (Ia0af2، b/341852305)
- تفعيل تتبُّع علامة النقل تلقائيًا في مقاييس الأداء تسجّل هذه الأداة، على سبيل المثال، نقاط تتبُّع wakelock. (Icfe44، b/286551983)
- زيادة مهلة بدء تسجيل التتبُّع لتجنُّب الأعطال عند بدء التتبُّع على الأجهزة الأبطأ (I98841، b/329145808)
- تمّت إضافة واجهة برمجة تطبيقات عامة
PerfettoTraceProcessor.Session.queryMetricsتتضمّن صيغ JSON وtextproto وproto الثنائية (غير مفكّكة). تتيح لك هذه الحقول طلب البحث عن المقاييس المضمّنة فيTraceProcessor(I54d7f، b/304038382). - فعِّل خيار حظر البدء في سجلّ تتبُّع Perfetto للحدّ من خطر فقدان البيانات في بداية عملية التتبُّع. لا تتوفّر إلا على الإصدار 33 من واجهة برمجة التطبيقات والإصدارات الأحدث. (Ie6e41، b/310760059)
- الردّ بتنسيق JSON
- تمت إضافة معلومات إضافية في سياق مقياس الأداء في إخراج JSON:
-
context.artMainlineVersion: إصدار عدد صحيح من وحدة Art الرئيسية (إذا كانت متوفّرة على الجهاز،-1بخلاف ذلك) context.build.id- يساوي android.os.Build.IDcontext.build.version.codename- يساوي android.os.Build.VERSION.CODENAME-
context.build.version.abbreviatedCodename: يتوافق مع الحرف الأول من الاسم الرمزي للإصدار المسبق (بما في ذلك إصدارات الإصدار) (Ie5020)
-
- تمت إضافة قائمة
profilerOutputإلى إخراج JSON لتسهيل استخدام الأدوات المتعلقة بتتبُّع بيانات تحديد المشاكل (مثل Perfetto وMethod traces) (I05ddd وb/332604449) - تمت إضافة تحذير عند استخدام Android Test Orchestrator في وحدات قياس الأداء، لأنّ ذلك سيؤدي إلى إعادة الكتابة بشكل متكرّر على ملفات JSON الناتجة لكل وحدة. (Ia1af6، b/286899049)
- يتم عرض خطأ عندما تكون أسماء الملفات أطول من 200 حرف لتجنُّب الأعطال غير الواضحة عند كتابة الملفات أو معالجتها بعد ذلك. (I4a5ab)
- تمت إضافة معلومات إضافية في سياق مقياس الأداء في إخراج JSON:
الإصدار 1.3.0-rc01
7 أغسطس 2024
تم طرح androidx.benchmark:benchmark-*:1.3.0-rc01. يتضمّن الإصدار 1.3.0-rc01 هذه التعديلات.
إصلاح الأخطاء
- إصلاح
androidx.benchmark.cpuEventCounterالذي ينتج قيمًا تالفة للأحداث غير التعليمية (I7386a، b/286306579) - إصلاح
resumeTiming/runWithTimingDisabledليتوافق مع ترتيب أولوية المقاييس، والحدّ بشكل كبير من تأثير الإيقاف المؤقت أو الاستئناف لمقياس ذي أولوية أقل على نتائج مقياس ذي أولوية أعلى على سبيل المثال، في حال استخدام عدّادات أداء وحدة المعالجة المركزية من خلال وسيطةcpuEventCounter.enable، لن يتم تقليل قيمة timeNs بشكل كبير عند الإيقاف المؤقت/الاستئناف. (I39c2e، b/286306579، b/307445225) - تقليل فرصة تسبُّب أخذ عيّنات من الذاكرة في حدوث الخطأ
measureRepeatedOnMainThreadبسبب انتهاء المهلة المحدّدة لسلسلة التعليمات الرئيسية، وذلك من خلال نقل عملية تحويل أخذ العيّنات من الذاكرة إلى سلسلة تعليمات أخرى (I487a8، b/342237318) - تمت إزالة التحديد اليدوي لإمكانية الوصول إلى واجهات برمجة التطبيقات الجديدة للمنصة، لأنّ ذلك يحدث تلقائيًا من خلال تصميم واجهة برمجة التطبيقات عند استخدام R8 مع الإصدار 7.3 أو إصدار أحدث من "المكوّن الإضافي لنظام Gradle المتوافق مع Android" (AGP) (مثل الإصدار 3.3 من R8)، وجميع عمليات الإنشاء عند استخدام الإصدار 8.1 أو إصدار أحدث من AGP (مثل الإصدار 8.1 من D8). ننصح العملاء الذين لا يستخدمون المكوّن الإضافي لنظام Gradle المتوافق مع Android (AGP) بالترقية إلى الإصدار 8.1 من D8 أو إصدار أحدث. يُرجى مراجعة هذه المقالة للاطّلاع على مزيد من التفاصيل. (I9496c، b/345472586)
- تمت إضافة عملية التحقّق من إصدار "مكوّن Android الإضافي لبرنامج Gradle" لإرسال اسم الحزمة كمعلَمة instr. قبل الإصدار 8.4.0 من "المكوّن الإضافي لنظام Gradle المتوافق مع Android"، لا يمكن إرسال اسم حزمة التطبيق المستهدَف إلى تطبيق أدوات القياس من خلال وسيطات أدوات القياس. (0c72a3f)
الإصدار 1.3.0-beta02
10 يوليو 2024
تم طرح androidx.benchmark:benchmark-*:1.3.0-beta02. يتضمّن الإصدار 1.3.0-beta02 هذه التعديلات.
إصلاح الأخطاء
- التعامل بشكل سليم مع EXITCODE
2عند بدء Perfetto لتسجيل تحذير، ولكن مع المتابعة
الإصدار 1.3.0-beta01
12 يونيو 2024
تم طرح androidx.benchmark:benchmark-*:1.3.0-beta01. يتضمّن الإصدار 1.3.0-beta01 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
- تمت إعادة تسمية
MethodTracing.affectsMeasurementOnThisDeviceإلىAFFECTS_MEASUREMENT_ON_THIS_DEVICEلضمان الاتساق. (I1bdfa) - تمت إضافة واجهة برمجة تطبيقات تجريبية
BlackHole.consume()لمنع إزالة الرمز البرمجي غير المستخدَم في اختبارات الأداء الدقيق. (If6812، b/286091643) - ستعرض أداة Microbenchmark الآن خطأ بشكل صحيح لمنع تداخل تتبُّع الطرق مع القياسات. يحدث ذلك على أجهزة معيّنة عند فرض تتبُّع الأسلوب (من خلال وسيطات الأدوات أو
MicrobenchmarkConfig)، وفي حال محاولة إجراء قياس بعد تتبُّع الأسلوب. تعمل الأجهزة المتأثّرة بالإصدارات 26 إلى 30 من واجهة برمجة التطبيقات أو إصدارات معيّنة من وحدة ART الرئيسية المتأثّرة بهذا التداخل، ويمكن رصدها في وقت التشغيل من خلالProfilerConfig.MethodTracing.affectsMeasurementOnThisDevice. (Iafb92، b/303660864)
إصلاح الأخطاء
- تمت زيادة الحد الأقصى لإصدار "مكوّن Android الإضافي لبرنامج Gradle" الذي يُنصح باستخدامه إلى 9.0.0-alpha01. (I5bbb0)
- تمت إضافة وضع التجميع إلى سياق قياس الأداء (If5612، b/325512900)
- تفعيل تتبُّع AIDL تلقائيًا (يتطلّب المستوى 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. (I87e8c، b/329145808)
الإصدار 1.3.0-alpha05
14 مايو 2024
تم طرح androidx.benchmark:benchmark-*:1.3.0-alpha05. يتضمّن الإصدار 1.3.0-alpha05 هذه التعديلات.
إصلاح الأخطاء
- طرح استثناء أوضح عندما يعرض مقياس Macrobenchmark قيمًا صفرية لجميع التكرارات (Iab58f، b/314931695)
- تمت إضافة قواعد إضافية لحل المشاكل إلى قواعد Proguard الخاصة باختبارات الأداء المصغّرة، بما في ذلك إتاحة قواعد أدوات معالجة الأحداث والتحذيرات / الأخطاء الأخرى التي تم رصدها. (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 هذه التعديلات
تغييرات واجهة برمجة التطبيقات
- تمت إضافة صيغة تجريبية
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 بطيئًا في البدء (I98841، b/329145808)
الإصدار 1.3.0-alpha03
17 أبريل 2024
تم طرح androidx.benchmark:benchmark-*:1.3.0-alpha03. يتضمّن الإصدار 1.3.0-alpha03 هذه التعديلات
الميزات الجديدة
- تضيف واجهة برمجة التطبيقات العامة
PerfettoTraceProcessor.Session.queryMetricsواجهات برمجة تطبيقات مع صيغ JSON وtextproto وproto الثنائية (غير مفكّكة). تتيح لك هذه الحقول طلب البحث عن المقاييس المضمّنة في TraceProcessor (I54d7f، b/304038382). - تمت إضافة
profilerOutputإلى إخراج JSON لتسهيل استخدام الأدوات المتعلقة بتتبُّع بيانات تحديد المشاكل (مثل perfetto، وتتبُّع الطرق). (I05ddd، b/332604449) - تمت إضافة علامة الطاقة إلى معيار Perfetto Config. تسجّل هذه الأداة، على سبيل المثال، نقاط تتبُّع wakelock. (Icfe44، b/286551983)
- تمت إضافة وسيطة inst
androidx.benchmark.profiling.skipWhenDurationRisksAnr، ويمكن ضبطها على "خطأ" لتجنُّب تخطّي عمليات تتبُّع الطرق عندما قد يؤدي الوقت المتوقّع إلى حدوث خطأ ANR، وننصح بشدة بتجنُّب ذلك في عمليات التشغيل المتكاملة. - تمت إضافة وسيط تجريبي
androidx.benchmark.profiling.perfCompare.enable، اضبط هذا الوسيط على "صحيح" لتنفيذ توقيت المقارنة بين مرحلتَي القياس وإنشاء الملفات الشخصية. مفيدة في تقييم الحمل الزائد لتتبُّع الطرق، على سبيل المثال. (I61fb4، b/329146942)
تغييرات واجهة برمجة التطبيقات
- تم تغيير
TraceSectionMetric.Modeإلى فئة محكمة الإغلاق لتفعيل التوسيع المستقبلي بدون إيقاف عبارات when الشاملة (I71f7b) - تمت إضافة
TraceSectionMetric.Mode.Averageو.Count، وإعادة ترتيب الوسيطات بحيث تكون الوسيطة الأكثر شيوعًا (الوضع) في وقت سابق من قائمة الوسيطات، ما يقلّل من الحاجة إلى تحديد أسماء المَعلمات. (Ibf0b0، b/315830077، b/322167531) - تمت إعادة تسمية
Metric.getResultإلىgetMeasurementsلتتطابق مع نوع الإرجاع (I42595)
إصلاح الأخطاء
- يجب حلّ المشكلة لضمان استخدام مقاييس الأداء لملفات تعريف أساسية تم إنشاؤها عندما تكون قيمة
automaticGenerationDuringBuildغير مفعّلة (Ic144f، b/333024280) - إصلاح عمليات إلغاء خصائص إضافة Gradle لتفعيل إنشاء ملفات تعريف أساسية وقياس الأداء عند تخصيص
nonMinifiedأو نوع إصدار قياس الأداءBaselineProfile(Ib8f05، b/324837887) - يتم إفراغ عمليات تتبُّع الدوال البرمجية الثابتة في Macrobenchmark، لذا من المفترض أن يتم تسجيل عمليات تتبُّع الدوال البرمجية بالكامل وأن تكون صالحة، حتى على الأجهزة الأبطأ. (I6349a، b/329904950)
- فعِّل خيار حظر البدء في سجلّ تتبُّع Perfetto للحدّ من خطر فقدان البيانات في بداية عملية التتبُّع. لا تتوفّر إلا على الإصدار 33 من واجهة برمجة التطبيقات والإصدارات الأحدث. (Ie6e41، b/310760059)
- تمت إضافة تحذير عند استخدام Android Test Orchestrator في وحدات قياس الأداء، لأنّ ذلك سيؤدي إلى إعادة الكتابة بشكل متكرّر على ملفات JSON الناتجة لكل وحدة. (Ia1af6، b/286899049)
- فرض استخدام الفاصلة (,) كفاصلة آلاف لتحقيق الاتساق في نتائج "استوديو YouTube"، مع تجاهل اللغة المحلية للجهاز (I3e921، b/313496656)
- يتيح
TraceSectionMetricالآن استخدام الشرائح التي تم إنشاؤها باستخدامTrace.{begin|end}AsyncSection. (I91b32، b/300434906) - تمت إضافة تصنيفات log.w / exception إلى جميع حالات تعذُّر رصد بدء التشغيل. لا يؤدي ذلك إلى تغيير السلوك الحالي (لذا سيتم عرض بعض الأخطاء، بينما يتعذّر على البعض الآخر رصد بدء التشغيل بدون إشعار)، بل يجعله أكثر وضوحًا. بشكل عام، تلك التي
Log.w()ولا يمكنها تسجيل مقاييس بدء التشغيل هي تلك التي لا تتضمّن أحداثًا غير مرتبطة بإطارات، ويتم طرح استثناءات عند رصد بدء التشغيل باستثناء معلومات توقيت الإطارات (من شرائح واجهة المستخدم/وقت التشغيل). (Id240f، b/329145809) - ألغِ مهام dexopt في الخلفية قبل تشغيل Macrobenchmark لتقليل التشويش. (I989ed)
- تمت إضافة مقياس
frameCountإلىFrameTimingMetricللمساعدة في رصد السيناريوهات التي تتغير فيها القياسات بسبب تغيُّر عدد اللقطات التي تم إنتاجها (تمت إضافة صور متحركة جديدة، وتم إصلاح مشاكل الإبطال). (I1e5aa) - تم توضيح أنّ
frameOverrunMsهو المقياس المفضّل للتتبُّع عند توفّره في المستندات، وسبب ذلك. (I18749، b/329478323)
الإصدار 1.3.0-alpha02
20 مارس 2024
تم طرح androidx.benchmark:benchmark-*:1.3.0-alpha02. يتضمّن الإصدار 1.3.0-alpha02 هذه التعديلات.
الميزات الجديدة
إتاحة استخدام R8 التجريبي في اختبارات الأداء الدقيقة من خلال قواعد proguard المضمّنة يُرجى العِلم أنّ هذه الميزة تجريبية، وتتطلّب الإصدار 8.3 من "مكوّن Android الإضافي في Gradle" لتصغير اختبارات وحدة المكتبة. استخدِم ما يلي لتفعيل تصغير/تحسين 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 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
- تمت إعادة تسمية المَعلمات المنطقية
MicrobenchmarkConfigلتجنُّب الكلمة غير الضرورية "يجب" (Ia8f00، b/303387299) - تمت إضافة
BenchmarkRule.measureRepeatedOnMainThreadحتى تتمكّن مقاييس الأداء لسلسلة المحادثات الرئيسية (مثل تلك التي تتضمّن "طرق العرض" أو واجهات مستخدم Compose) من تجنُّب تشغيل أخطاء ANR، خاصةً أثناء المجموعات الكبيرة في عملية التكامل المستمر. (I5c86d) - تمت إضافة
FrameTimingGfxInfoMetric، وهي عملية تنفيذ تجريبية بديلة لـFrameTimingMetricمع الحصول على القياسات مباشرةً من النظام الأساسي، بدلاً من استخراجها من تتبُّع Perfetto. (I457cb، b/322232828) - إضافة إمكانية تفريغ ملف ART أثناء تكرار
warmUpالفردي (I17923) - أجرينا عدة تغييرات على واجهة برمجة التطبيقات
TraceSectionMetric:- إضافة
Mode.Min،Mode.Max - إضافة وسيطة التصنيف لتجاوز اسم القسم كتصنيف للمقياس
- تمّت إضافة اسم الوضع إلى الناتج لتوضيح معنى المقياس
- تم تغيير القيمة التلقائية إلى المجموع، لأنّ معظم استخدام هذا المقياس يكون للأحداث المتكرّرة يجب الانتباه إلى هذه التغييرات في استخدام CI، لأنّها قد تؤدي إلى حدوث انقطاعات أو تعذُّر التحليل. (Ic1e82، b/301892382، b/301955938)
- إضافة
إصلاح الأخطاء
- تم تحسين رسالة الخطأ في مكوّن Gradle الإضافي لملف تعريف خط الأساس عندما لا يكون الجهاز المُدار المحدّد متوفّرًا (Idea2b، b/313803289)
- إصلاح مشكلة تضمين ملفات تعريف خط الأساس للمكتبة في ملف AAR قبل الإصدار 8.3.0-alpha15 من "المكوّن الإضافي لنظام Gradle المتوافق مع Android" (I1d2af وb/313992099)
- تم إصلاح عنوان URL الناتج عن ملفات تعريف خط الأساس ووقت بدء التشغيل في نهاية مهمة الإنشاء (I802e5، b/313976958)
- تم تعديل مهلات مصادر البيانات في محاولة لإصلاح الخطأ
java.lang.IllegalStateException: Failed to stop [ProcessPid(processName=perfetto, pid=...)](I8dc7d، b/323601788) - إضافة وسيطتَي أدوات القياس لتجاوز سلوك حذف التظليل من أجل حلّ الأعطال عند قياس أداء التطبيقات التي لا تتضمّن
ProfileInstaller1.3:-
androidx.benchmark.dropShaders.enable=true/false: يمكن استخدامها لتخطّي جميع عمليات إزالة تظليل الأشكال (بما في ذلك تلك التي تتم في عمليات إطلاقStartupMode.Cold)، خاصةً عند قياس أداء التطبيقات التي لم تستخدم بعد الإصدار 1.3 من profileinstaller - يمكن استخدام
androidx.benchmark.dropShaders.throwOnFailure=true/falseلتحمّل حالات الأعطال عند محاولة إيقاف برامج التظليل، مثلاً عند قياس أداء التطبيقات بدون الإصدار 1.3 من profileinstaller (I4f573).
-
- تخطّي تتبُّع الأسلوب في سلسلة التعليمات الخاصة بواجهة المستخدم عندما يُتوقّع أن يستغرق ذلك أكثر من بضع ثوانٍ، وتنظيف عمليات تتبُّع الأسلوب عند عرض استثناء (I6e768)
- يتم عرض خطأ عندما تكون أسماء الملفات أطول من 200 حرف لتجنُّب الأعطال غير الواضحة عند كتابة الملفات أو معالجتها بعد ذلك. (I4a5ab)
- تم إصلاح المشكلة التي يمكن فيها إقران اللقطات غير المنتهية في بداية التتبُّع ونهايته، ما يؤدي إلى تسجيلها بشكل غير صحيح على أنّها لقطة واحدة طويلة جدًا. (I39353، b/322232828)
- استخدِم
--skip verificationعلى المستوى 30 من واجهة برمجة التطبيقات أو الإصدارات الأحدث عند إعادة تثبيت حزمة على المستوى 30 إلى 33 من واجهة برمجة التطبيقات لمحو ملفات ART الشخصية في إصدارات المستخدمين. يساعد ذلك في تجاوز تحذيرات "Play للحماية" التي تتسبّب في حدوث أعطال على بعض فئات الأجهزة. (Ic9e36) - استخدِم
am force-stopلإيقاف التطبيقات عندما لا تكون من تطبيقات النظام، مثل واجهة مستخدم النظام أو مشغّل التطبيقات. (I5e028) - تنتظر مكتبة Macrobenchmark الآن
1 secondحتى يمحو التطبيق المستهدف ملف تعريف ART (كانت تنتظر500 msفي السابق). (I85a50، b/316082056) - تحسين الخطأ
FrameTimingMetricعند عدم إنشاء إطارات، وعرض رابط دائمًا لتتبُّع المشكلة عند تعذُّر تحليل المقاييس للمساعدة في تشخيص المشكلة (I956b9) - تم إصلاح عُطل في
FrameTimingMetricبسبب تعذُّر تحليل رقم تعريف الإطار، خاصةً على بعض أجهزة المصنّعين الأصليين للأجهزة. (Ia24bc، b/303823815، b/306235276) - تم تخفيف صرامة عمليات التحقّق في
FrameMetrics، وأضفنا المزيد من التفاصيل إلى رسائل الخطأ. (Iadede)
الإصدار 1.2
الإصدار 1.2.4
17 أبريل 2024
تم طرح androidx.benchmark:benchmark-*:1.2.4. يتضمّن الإصدار 1.2.4 هذه التعديلات.
إصلاح الأخطاء
- إصلاح مشكلة عدم إعداد srcset لملف تعريف خط الأساس في صيغ قياس الأداء يحلّ هذا الإصدار أيضًا المشكلة
automaticGenerationDuringBuildفي المكتبات التي تتسبّب في إنشاء تبعية دائرية. (I28ab7، b/333024280) - استخدِم
am force-stopلإيقاف التطبيقات عندما لا تكون من تطبيقات النظام، مثل واجهة مستخدم النظام أو مشغّل التطبيقات. يحلّ هذا الإصلاح مشكلة تعطُّل مقاييسStartupMode.COLDبسبب الخطأ "Package $package must not be running prior to cold start!" (يجب ألا تكون الحزمة $package قيد التشغيل قبل بدء التشغيل البارد!) لأنّ عملية إيقاف التشغيل لم تنجح بالكامل. (I5e028)
الإصدار 1.2.3
24 يناير 2024
تم طرح androidx.benchmark:benchmark-*:1.2.3. يتضمّن الإصدار 1.2.3 هذه التعديلات.
إصلاح الأخطاء
- تمت إزالة الاستثناء من المكوّن الإضافي لنظام Gradle الخاص بملفات Baseline Profile عندما يكون إصدار المكوّن الإضافي لنظام Android Gradle (AGP) هو 8.3.0 أو إصدار أحدث.
- إصلاح مشكلة تضمين ملفات تعريف خط الأساس للمكتبة في ملف AAR قبل الإصدار 8.3.0-alpha15 من المكوّن الإضافي لنظام Gradle المتوافق مع Android
الإصدار 1.2.2
1 ديسمبر 2023
تم طرح androidx.benchmark:benchmark-*:1.2.2. يتضمّن الإصدار 1.2.2 هذه التعديلات.
ملفات Baseline Profile
- ستعرض سجلّات التنفيذ مسار ملف بيانات الأداء الأساسية كمعرّف موارد منتظم (URI) لملف محلي (aosp/2843918 وaosp/2853665 وb/313976958).
الإصدار 1.2.1
15 تشرين الثاني (نوفمبر) 2023
تم طرح androidx.benchmark:benchmark-*:1.2.1. يتضمّن الإصدار 1.2.1 هذه التعديلات.
الميزات الجديدة
- تحسين رسالة الخطأ عند إيقاف المستخدم لمتغيرات الاختبار (b/307478189)
- تمت إضافة خصائص لتفعيل دمج عمليات تشغيل اختبارات "استوديو Android" (b/309805233)، (b/309116324)
الإصدار 1.2.0
18 أكتوبر 2023
تم طرح androidx.benchmark:benchmark-*:1.2.0. يتضمّن الإصدار 1.2.0 هذه التعديلات.
التغييرات المهمة منذ الإصدار 1.1.0
ملفات Baseline Profile
- تعمل إضافة Baseline Profile Gradle الجديدة على أتمتة عملية تسجيل ملفات Baseline Profile وتضمينها في سير عمل الاختبار والإنشاء.
BaselineProfileRule.collect، وهو الآن إصدار ثابت ومبسّط من واجهة برمجة التطبيقات التجريبية السابقةBaselineProfileRule.collectBaselineProfile- ما عليك سوى تحديد
packageName، وسنساعدك في الترويج لتطبيقك
- ما عليك سوى تحديد
- بالنسبة إلى المكتبات التي تنشئ ملفات تعريف أساسية، يمكنك الآن فلترة القواعد التي تم إنشاؤها إما في الرمز البرمجي (الوسيطة
BaselineProfileRule.collect)، أو بشكل أبسط في إضافة Gradle. - الإصلاحات
- تم إصلاح مشكلة جمع بيانات ملفات تعريف خط الأساس على الإصدارات Android U والإصدارات الأحدث (Id1392، b/277645214)
Macrobenchmark
- التحويل البرمجي
- تعيد مكتبة Macrobenchmark الآن ضبط حالة التجميع بالكامل بشكل صحيح لكل عملية تجميع. ويتطلّب ذلك إعادة تثبيت حزمة APK قبل الإصدار 14 من نظام التشغيل Android، لذا يُنصح بشدة بإجراء قياس الأداء على الإصدار 14 من نظام التشغيل Android أو الإصدارات الأحدث إذا كنت تريد الاحتفاظ بالحالة (مثل تسجيل دخول المستخدم) في ما يتم قياسه.
- يمكنك أيضًا حلّ هذه المشكلة من خلال التحكّم في تجميع التطبيق بشكل منفصل، وتخطّي التجميع باستخدام
CompilationMode.Ignore()أو وسيطة القياس.
وسيطات القياس
- إتاحة وسيطة
androidx.benchmark.dryRunMode.enableلأداة القياس (متوفّرة حاليًا في أداة القياس الصغيرة) لإجراء عمليات التحقّق بشكل أسرع (مثلاً، عند إنشاء معيار الأداء أو في عملية التحقّق قبل الإرسال) - إتاحة استخدام
androidx.benchmark.profiling.mode=StackSamplingوMethodTracing - تمت إضافة
androidx.benchmark.enabledRulesللسماح بإجراء اختبارات على ملفات تعريف خط الأساس مقابل قواعد الاختبارات الكبيرة أثناء وقت التشغيل - تمت إضافة الوسيطة
androidx.benchmark.perfettoSdkTracing.enableلتفعيل التتبُّع باستخدام tracing-perfetto، مثل تتبُّع إعادة إنشاء Compose. يُرجى العِلم أنّه عند استخدامها معStartupMode.COLD، سيتأثر التوقيت بشكل كبير لأنّه يتم تحميل مكتبة التتبُّع وتفعيلها أثناء بدء تشغيل التطبيق.
- إتاحة وسيطة
المتطلبات
- يتطلّب Macrobenchmark الآن الإصدار
ProfileInstaller1.3.0 أو إصدارًا أحدث في التطبيق المستهدف لتفعيل عملية تسجيل الملف الشخصي أو إعادة ضبطه، ومحو ذاكرة التخزين المؤقت لبرامج التظليل.
- يتطلّب Macrobenchmark الآن الإصدار
واجهات برمجة التطبيقات للمقاييس التجريبية الجديدة
- تمت إضافة
TraceSectionMetricالتجريبية، والتي تتيح استخراج توقيت بسيط من حِزمtrace("") {}في تطبيقك، أو TraceMetric للاستفادة من إمكانية طلب البحث الكاملة في PerfettoTraceProcessor. - تمت إضافة
PowerMetricتجريبية لتسجيل معلومات حول استهلاك الطاقة - تمت إضافة
MemoryCountersMetricالتجريبية لاحتساب أخطاء الصفحة - تمت إضافة واجهة برمجة التطبيقات التجريبية
PerfettoTraceProcessor، والتي تُستخدَم داخليًا لاستخراج المقاييس من عمليات تتبُّع النظام (المعروفة أيضًا باسم عمليات تتبُّع Perfetto)
- تمت إضافة
الإصلاحات
- تم إصلاح الأعطال التي تحدث عند تثبيت الملفات الشخصية أو استخراجها من تطبيق مثبَّت من حِزم APK متعددة (مثل حِزمة التطبيقات).
- تم إصلاح مشكلة
FrameTimingMetricالتي تتجاهل اللقطات التي تتضمّن أرقام تعريف غير متسقة (بشكل عام، اللقطات أثناء التموجات على الإصدار 31 من واجهة برمجة التطبيقات أو الإصدارات الأحدث) (I747d2، b/279088460) - تم إصلاح أخطاء التحليل في عمليات التتبُّع التي تزيد عن 64 ميغابايت (Ief831، b/269949822)
- توضيح الأخطاء التي تحدث عندما لا يتم ضبط صورة نظام التشغيل على الجهاز (خاصةً المحاكي) بشكل صحيح لتتبُّع الأخطاء أو التجميع
- تخطّي التحقّق من مستوى البطارية للأجهزة التي لا تحتوي على بطارية (الصور المقرّبة والبعيدة)
- تحسين إخراج الملفات، مع عرض أخطاء أكثر وضوحًا لأدلة الإخراج غير الصالحة، وإعدادات تلقائية أكثر أمانًا
- تحسين ثبات
StartupMode.COLDمن خلال حذف ذاكرة التخزين المؤقت لبرامج التظليل باستمرار (يمكن الوصول إليها أيضًا من خلالMacrobenchmarkScope.dropShaderCache) - تم إصلاح الإجراء الاحتياطي في وضع العرض على شاشة كبيرة لتطبيق
startActivityAndWait.
Microbenchmark
- الميزات
- تم نقل عملية إنشاء الملفات إلى مرحلة منفصلة بعد المقاييس الأخرى، وبالتالي يمكن أن يعرض تشغيل الاختبار مرة واحدة نتائج توقيت دقيقة ونتائج إنشاء الملفات.
- واجهات برمجة التطبيقات التجريبية
- تمت إضافة واجهة برمجة التطبيقات التجريبية
MicrobenchmarkConfigلتحديد المقاييس المخصّصة وإعداد التتبُّع وإنشاء الملفات الشخصية. يمكن استخدامها لتسجيل عمليات تتبُّع الطرق أو نقاط التتبُّع (ولكن يجب الانتباه إلى تكلفة التتبُّع). - تمت إضافة واجهات برمجة تطبيقات تجريبية للتحكّم في
BenchmarkStateبشكل منفصل عنBenchmarkRule، بدون JUnit - تمت إضافة سجلّ
PerfettoTraceتجريبي لتفعيل تسجيل عمليات تتبُّع Perfetto، مع إعدادات مخصّصة، بشكل منفصل عن واجهات برمجة التطبيقات الخاصة باختبار الأداء.
- تمت إضافة واجهة برمجة التطبيقات التجريبية
- الإصلاحات
- حلّ بديل لمشكلة عدم توفّر مسافات بيضاء بادئة في نتائج قياس الأداء في "استوديو Android"
- تم إصلاح مشكلة تعذّر عرض التحذيرات في نتائج قياس الأداء في Android Studio.
- تم إصلاح عُطل
SampledProfilingعلى الإصدار 13 من نظام التشغيل Android (المستوى 33 لواجهة برمجة التطبيقات) والإصدارات الأحدث. - تحسين أداء
dryRunModeبشكل كبير من خلال تخطّيIsolationActivityوتتبُّع Perfetto (أسرع 10 مرات في وضع التشغيل التجريبي على إصدارات نظام التشغيل القديمة)
الإصدار 1.2.0-rc02
6 أكتوبر 2023
تم طرح androidx.benchmark:benchmark-*:1.2.0-rc02. يتضمّن الإصدار 1.2.0-rc02 هذه التعديلات.
إصلاح الأخطاء
- تم إصلاح مشكلة إخراج ملفات Benchmark لكي لا تتسبّب في إيقاف
BaselineProfileنسخ ملفات المكوّن الإضافي. تم إنشاء الملفات ونسخها من الجهاز، ولكن تمت إعادة تسميتها بطريقة لا يراها مكوّن Gradle الإضافي. (I8dbcc، b/303034735، b/296453339) - تم توضيح رسائل الخطأ في التحميل
tracing-perfettoعند إدخال البيانات من وحدة macrobenchmark إلى التطبيق المستهدف.
الإصدار 1.2.0-rc01
20 سبتمبر 2023
تم طرح androidx.benchmark:benchmark-*:1.2.0-rc01. يتضمّن الإصدار 1.2.0-rc01 هذه التعديلات.
إصلاح الأخطاء
- يتم الآن طرح استثناء (مع تعليمات الإصلاح) عندما يتعذّر إعداد تتبُّع حزمة تطوير البرامج (SDK) في Perfetto في أحد مقاييس الأداء. (I6c878، b/286228781)
- إصلاح عُطل OOM عند تحويل سجلّ تتبُّع طريقة ART إلى تنسيق perfetto (I106bd، b/296905344)
- (Macrobenchmark) تم توضيح تصنيف تتبُّع الطريقة عند الربط في نتائج اختبار Studio، وتم إصلاح أسماء ملفات تتبُّع الطريقة لتكون فريدة على الجهاز/المضيف، وبالتالي لن تتم الكتابة فوقها عند تنفيذ أكثر من مقياس أداء واحد. (I08e65، b/285912360)
- يضمن هذا الخيار أن يكون الجهاز نشطًا عند تسجيل ملف تعريف أساسي. (I503fc)
الإصدار 1.2.0-beta05
30 أغسطس 2023
تم طرح androidx.benchmark:benchmark-*:1.2.0-beta05. يتضمّن الإصدار 1.2.0-beta05 هذه التعديلات.
الميزات الجديدة
- يتوافق المكوّن الإضافي لنظام Gradle الخاص بملفات Baseline Profile الآن مع الإصدار 8.3 من المكوّن الإضافي لنظام Gradle المتوافق مع Android. (aosp/2715214)
الإصدار 1.2.0-beta04
23 أغسطس 2023
تم طرح androidx.benchmark:benchmark-*:1.2.0-beta04. يتضمّن الإصدار 1.2.0-beta04 هذه التعديلات.
الميزات الجديدة
- يتوافق المكوّن الإضافي لنظام Gradle الخاص بملفات Baseline Profiles الآن مع الإصدار 8.3 من المكوّن الإضافي لنظام Gradle المتوافق مع Android. (aosp/2715214)
إصلاح الأخطاء
- إصلاح حالات تعذُّر كتابة الملفات أو نقلها أو سحبها (خاصةً تلك التي يتم إنشاؤها من الاختبارات ذات المَعلمات) من خلال تنظيف أسماء ملفات الإخراج بشكل أكبر، وتجنُّب استخدام الرمزين "=" و":" في أسماء ملفات الإخراج (I759d8)
الإصدار 1.2.0-beta03
9 أغسطس 2023
تم طرح androidx.benchmark:benchmark-*:1.2.0-beta03. يتضمّن الإصدار 1.2.0-beta03 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
- تمت إضافة وسيطة لفلترة
TraceSectionMetricإلى الحزمة المستهدَفة فقط، ويتم تفعيلها تلقائيًا (Ia219b، b/292208786)
إصلاح الأخطاء
- تمت إعادة تسمية وسيطة أداة
fullTracing.enableإلىperfettoSdkTracing.enableلضمان الاتساق مع اسم العنصر المصدَّق عليه والمراجع الأخرى. سيظلّfullTracing.enableيعمل كخيار احتياطي. (I7cc00) - ستظهر الآن نقاط التتبُّع الداخلية لمكتبة القياس (بما في ذلك تتبُّع الحلقات/المراحل الدقيقة) في عارض تتبُّع نظام Studio، وسيتم تضمينها ضمن العملية الصحيحة في Perfetto. (I6b2e7، b/293510459)
- تمت إزالة خطأ macrobenchmark NOT-PROFILEABLE على الإصدار 31 من واجهة برمجة التطبيقات والإصدارات الأحدث، وتم تخطّي عملية التحقّق من إمكانية إنشاء الملف الشخصي على أجهزة eng/userdebug التي تم الوصول إلى جذرها. (I2abac، b/291722507)
- عند استخدام ميزة "تحسينات تخطيط Dex"، يتم الآن أيضًا اعتبار قواعد ملف بدء التشغيل كقواعد ملف أساسي. (aosp/2684246 وb/293889189)
الإصدار 1.2.0-beta02
26 تموز (يوليو) 2023
تم طرح androidx.benchmark:benchmark-*:1.2.0-beta02. يتضمّن الإصدار 1.2.0-beta02 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
- تمت إضافة واجهات برمجة تطبيقات تجريبية للمقاييس والإعدادات المخصّصة للاختبارات الدقيقة (مثل أداة تحليل الأداء والتتبُّع). (I86101، b/291820856)
إصلاح الأخطاء
- الإبلاغ عن خطأ في اختبارات الأداء الكبيرة عندما يكون نظام التشغيل غير مضبوط بشكل صحيح لتتبُّع الأخطاء، كما تم إصلاحه مؤخرًا في محاكيات ARM64 التي تعمل بالإصدار 26/28 من واجهة برمجة التطبيقات (I0a328، b/282191686)
- أضفنا تفاصيل حول تعذُّر إعادة ضبط التجميع لاقتراح تعديل المحاكي، لأنّ بعض المحاكيات حلّت هذه المشكلة مؤخرًا. (I8c815، b/282191686)
- اجعل
androidx.test.uiautomator:uiautomator:2.2.0apiبدلاً منimplementation. (I1981e)
الإصدار 1.2.0-beta01
18 يوليو 2023
تم طرح androidx.benchmark:benchmark-*:1.2.0-beta01. يتضمّن الإصدار 1.2.0-beta01 هذه التعديلات.
إصلاح الأخطاء
- إصلاح مشكلة عدم ظهور التحذيرات أحيانًا في نتائج "قياس الأداء" في "استوديو YouTube"، وإصلاح مشكلة عدم ظهور المسافات البيضاء في بداية السطر في نتائج "قياس الأداء" في "استوديو YouTube" (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 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
- تمت إعادة تسمية واجهة برمجة التطبيقات
BaselineProfileRule.collectBaselineProfile()إلىBaselineProfileRule.collect(). (I4b665)
إصلاح الأخطاء
- تتوافق أداة Macrobenchmark مع
androidx.benchmark.profiling.mode = MethodTracing. (I7ad37، b/285912360) - تم نقل عملية إنشاء ملفات تعريف Microbenchmark إلى مرحلة منفصلة، لذا تحدث بالتسلسل بعد القياس، بدلاً من استبدالها. يتم الآن أيضًا تضمين أقسام تتبُّع
MethodTracingفي عملية تتبُّع Perfetto التي تم تسجيلها، إذا كانت متوفّرة. (I9f657، b/285014599) - أضِف مقياس العدد إلى
TraceSectionMetricباستخدامMode.Sum. (Ic121a، b/264398606)
الإصدار 1.2.0-alpha15
7 يونيو 2023
تم طرح androidx.benchmark:benchmark-*:1.2.0-alpha15. يتضمّن الإصدار 1.2.0-alpha15 هذه التعديلات.
الميزات الجديدة
- تمت إضافة
MemoryUsageMetricتجريبية لتتبُّع استخدام الذاكرة في تطبيق مستهدَف. (I56453، b/133147125، b/281749311) - إتاحة استخدام إعدادات Perfetto المخصّصة بالكامل مع
PerfettoTrace.record(If9d75 وb/280460183) - تمت إضافة السمة لتخطّي إنشاء ملفات تعريف الأداء الأساسية. الاستخدام:
./gradlew assemble -Pandroidx.baselineprofile.skipgeneration(I37fda، b/283447020)
تغييرات واجهة برمجة التطبيقات
- تنشئ واجهة برمجة التطبيقات
collectBaselineProfileدائمًا ملفات تعريف أساسية ثابتة. تمت إزالة واجهة برمجة التطبيقاتcollectStableBaselineProfile، ويجب استخدامcollectBaselineProfileبدلاً منها. (I17262، b/281078707) - تم تغيير وسيطة
filterPredicateفيBaselineProfileRuleإلى قيمة غير فارغة، مع قيمة تلقائية مكافئة حتى يكون سلوك الفلتر التلقائي أكثر وضوحًا في المستندات. (I3816e)
إصلاح الأخطاء
- يمكنك إيقاف
IsolationActivityوPerfetto tracing فيdryRunModeلتحسين الأداء بشكل كبير، لأنّ هاتين الميزتين كانتا تستغرقان معظم وقت التشغيل. (Ie4f7d) - إتاحة أخذ عيّنات من حزمة استدعاء الدوال البرمجية في Macrobenchmarks باستخدام وسيطتَي اختبار الأدوات
androidx.benchmark.profiling.mode=StackSamplingوandroidx.benchmark.profiling.sampleFrequency(I1d13b، b/282188489) - تم إصلاح عُطل يحدث عند إسقاط برامج تظليل على نظام التشغيل Android U (الإصدار 34 من واجهة برمجة التطبيقات)، وكذلك على المحاكيات. (I031ca، b/274314544)
الإصدار 1.2.0-alpha14
3 مايو 2023
تم طرح androidx.benchmark:benchmark-*:1.2.0-alpha14. يتضمّن الإصدار 1.2.0-alpha14 هذه التعديلات.
إصلاح الأخطاء
- تم إصلاح مشكلة
FrameTimingMetricالتي تتجاهل اللقطات التي تتضمّن أرقام تعريف غير متسقة. سيؤدي ذلك إلى تجاهل بعض الحركات على أحدث إصدارات النظام الأساسي (المستوى 31 من واجهة برمجة التطبيقات أو الإصدارات الأحدث) للعديد من اللقطات أثناء تحريكRenderThread(على سبيل المثال، أثناء تموّج). (I747d2، b/279088460) - تم إصلاح تحليل معالج التتبُّع لعمليات التتبُّع التي يزيد حجمها عن 64 ميغابايت. (Ief831، b/269949822)
- تم إصلاح مشكلة تعذُّر إنشاء ملفات تعريف أساسية على Android U بسبب اختلاف ناتج الأمر
pm dump-profiles. (Id1392، b/277645214) - إصلاح نص برمجي لقفل سرعة وحدة معالجة الرسومات من أجل مقارنة السلاسل بشكل صحيح (I53e54، b/213935715)
الإصدار 1.2.0-alpha13
5 أبريل 2023
تم طرح androidx.benchmark:benchmark-*:1.2.0-alpha13. يتضمّن الإصدار 1.2.0-alpha13 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
- تمت إضافة مَعلمة نوع الملف الشخصي عند إنشاء ملفات تعريف أساسية لدعم ميزة ملف تعريف بدء التشغيل القادمة (Ie20d7، b/275093123)
- تمت إضافة واجهة برمجة تطبيقات تجريبية جديدة
TraceMetricلتحديد مقاييس مخصّصة بالكامل استنادًا إلى محتوى تتبُّع Perfetto. (I4ce31، b/219851406) - أضِف مقياسًا تجريبيًا لتحديد عدد أخطاء الصفحات أثناء قياس الأداء. (I48db0)
الإصدار 1.2.0-alpha12
22 مارس 2023
تم طرح androidx.benchmark:benchmark-*:1.2.0-alpha12. يتضمّن الإصدار 1.2.0-alpha12 هذه التعديلات.
الميزات الجديدة
- تم إصدار مكوّن Gradle الإضافي الجديد لملف تعريف الأداء الأساسي في الإصدار الأولي، ما يسهّل إنشاء ملف تعريف الأداء الأساسي ويبسّط عملية سير عمل المطوّرين.
تغييرات واجهة برمجة التطبيقات
- تمت إزالة إمكانية تتبُّع Perfetto على الإصدارَين 21 و22 من واجهة برمجة التطبيقات، ويشمل ذلك كلاً من Microbenchmarks وواجهات برمجة التطبيقات التجريبية
PerfettoTrace. قبل هذا الإصدار، كانت اتصالاتUiAutomationغير موثوقة على بعض الأجهزة. (I78e8c) - تمت إضافة واجهة برمجة تطبيقات تجريبية عامة إلى
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 هذه التعديلات.
الميزات الجديدة
- على الإصدار 14 من نظام التشغيل Android والإصدارات الأحدث، لم يعُد اختبار Macrobenchmark يعيد تثبيت التطبيقات المستهدَفة لإعادة ضبط حالة التجميع، وذلك بفضل ميزة جديدة في النظام الأساسي. في السابق، كان من الضروري توفُّر جهاز تم الوصول إلى جذوره، أو التعامل مع إزالة جميع حالات التطبيق (مثل تسجيل دخول المستخدم) قبل تشغيل كل مقياس أداء. (I9b08c، b/249143766)
إصلاح الأخطاء
- تم إصلاح الخطأ الذي كان يؤدي إلى تعذُّر تشغيل
DryRunModeعند استخدام ملف شخصي فارغ، وذلك من خلال إيقاف عملية التجميع. بدلاً من ذلك، يتم تنفيذ تكرار واحد واستخراج الملف الشخصي لضمان تسجيل بعض البيانات. (I2f05d، b/266403227) - إصلاح عُطل
PowerMetricعند التحقّق من توفّر powerstats على مستويات واجهة برمجة التطبيقات القديمة (5faaf9، b/268253898)
الإصدار 1.2.0-alpha09
11 يناير 2023
تم طرح androidx.benchmark:benchmark-*:1.2.0-alpha09. يتضمّن الإصدار 1.2.0-alpha09 هذه التعديلات.
إصلاح الأخطاء
- تم تفعيل تمرير
Noneإلى وسيطة أداةandroidx.benchmark.enabledRulesلإيقاف جميع مقاييس الأداء / إنشاء ملفات تعريف خط الأساس. (I3d7fd، b/258671856) - إصلاح عملية تسجيل
PerfettoTraceفي وحدات التطبيق (أي حِزم APK للاختبار غير المزوّدة بأدوات القياس الذاتي) (I12cfc) - تم إصلاح ترتيب وسيطة سحب ملفات تعريف خط الأساس الثابتة في ناتج Studio (I958d1، b/261781624)
- يتم الآن التعرّف على واجهة برمجة التطبيقات 33 لمحاكي ARM بشكل صحيح عند محاولة تشغيل اختبار Macrobenchmark، وسيتم عرض التحذير بشكل صحيح. (69133b،b/262209591)
- تخطّي التحقّق من مستوى البطارية على الأجهزة التي لا تحتوي على بطارية في Macrobenchmark (fe4114 وb/232448937)
الإصدار 1.2.0-alpha08
7 كانون الأول (ديسمبر) 2022
تم طرح androidx.benchmark:benchmark-*:1.2.0-alpha08. يتضمّن الإصدار 1.2.0-alpha08 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
- تمت إضافة واجهتَي برمجة تطبيقات تجريبيتَين جديدتَين،
PerfettoTrace.record {}وPerfettoTraceRule، لتسجيل عمليات تتبُّع Perfetto (المعروفة أيضًا باسم عمليات تتبُّع النظام) كجزء من الاختبار، وذلك لفحص سلوك الاختبار وأدائه. (I3ba16) - يقبل
BaselineProfileRuleالآن دالة منطقية للفلترة بدلاً من قائمة ببادئات الحِزم. يمنح ذلك الاختبار التحكّم الكامل في الفلترة. (I93240) - أضِف واجهة برمجة تطبيقات تجريبية
BaselineProfileRule.collectStableBaselineProfileتنتظر إلى أن يصبح ملف تعريف خط الأساس ثابتًا لعدد N من التكرارات. (I923f3) - إضافة إمكانية تحديد بادئة اسم ملف الإخراج عند إنشاء ملفات تعريف أساسية باستخدام
BaselineProfileRule(I7b59f، b/260318655)
إصلاح الأخطاء
- تحسين أمان كتابة ملفات الإخراج، ما من شأنه أن يمنع عدم كتابة ملفات الإخراج أو إلحاقها بدون إشعار، خاصةً على الإصدارين 21 و22 من واجهة برمجة التطبيقات (If8c44، b/227510293)
- أصلِح ناتج تتبُّع
simpleperfلإنشاء الملف ووضعه بشكل صحيح. من المفترض أن يحلّ ذلك أيضًا المشاكل التي يتعذّر فيها استرداد ملف باستخدام Gradle. (I12a1c، b/259424099) - تحسين رسالة الخطأ التي يتم عرضها عند استخدام إصدار قديم جدًا من profileinstaller يطلب منك هذا الخطأ الآن تعديل إصدار profileinstaller (الإصدار 1.2.1) لقياس "ملفات تعريف الخط الأساس" على مستويات واجهة برمجة التطبيقات من 31 إلى 33، بدلاً من الإشارة إلى أنّ هذه العملية غير متاحة. (Ia517f، b/253519888)
- إصلاح العديد من حالات تعذُّر تنفيذ أوامر shell بسبب رسالة الخطأ Print needed API <=23، بما في ذلك حالات تعذُّر إعداد ملف perfetto الثنائي وحالات تعذُّر تسجيل التتبُّع (Ib6b87 وb/258863685)
- ترتيب قواعد الملف الشخصي التي تم إنشاؤها تلقائيًا لتقليل عدد التغييرات عند تغيُّرها بمرور الوقت (عند تسجيل قواعد الملف الشخصي في نظام التحكّم بالمصادر) (Ie2509)
- تم إصلاح عُطل في الإصدارات غير المجذَّرة التي تعمل بإصدار أقدم من Android 13 (المستوى 33 لواجهة برمجة التطبيقات) مع ظهور الرسالة
Expected no stderr from echo 3 > /proc/sys/vm/drop_caches(I6c245، b/259508183)
المشاكل المعروفة
- قد يتعطّل تطبيق MacrobenchmarkScope.dropShaderCache() بسبب عدم توفّر سجلّ بث في بيان profileinstaller الذي لم يتم إصداره بعد. (I5c728، b/258619948) لحلّ المشكلة في الإصدار profileinstaller:1.3.0-alpha02، أضِف ما يلي إلى ملف AndroidManifest.xml الخاص بتطبيقك (وليس ملف 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 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
- تضيف هذه السمة واجهة برمجة التطبيقات
PowerMetricلقياس الطاقة واستهلاكها في Macrobenchmarks. (Ife601، b/220183779) - تم إصلاح
MacrobenchmarkScope.dropShaderCache()لإزالة ذاكرة التخزين المؤقت لبرنامج تظليل الرسومات. يؤدي ذلك إلى إزالة حوالي 20 ملي ثانية من الضوضاء من مقاييسStartupMode.COLD، لأنّه يتم الآن محو برامج التظليل باستمرار في كل تكرار. في السابق، كانت عملية تجميعPartialباستخدام تكرارات الإحماء تعرض أرقامًا سريعة بشكل غير صحيح، لأنّ التخزين المؤقت لتظليل كان من المرجّح أن يحدث أثناء الإحماء. يتطلّب هذا الإصلاح إما جهازًا تم عمل روت له أو استخدامprofileinstaller:1.3.0-alpha02في التطبيق المستهدف. للاطّلاع على تغييرات واجهة برمجة التطبيقات في مكتبةProfileInstaller، يُرجى الرجوع إلى صفحة ProfileInstaller 1.30-alpha02. (Ia5171، b/231455742) - تمت إضافة
TraceSectionMode("label", Mode.Sum)، ما يتيح قياس إجمالي الوقت المستغرَق في أقسام تتبُّع متعددة تحمل التصنيف نفسه. على سبيل المثال، سيسجّلTraceSectionMetric("inflate", Mode.Sum)المقياسinflateMsلإجمالي الوقت الذي تم استخدامه في اختبار الأداء الشامل لتضخيم البيانات. تم أيضًا إزالة شرط المستوى 29 من واجهة برمجة التطبيقات، لأنّTraceSectionMetricيعمل معandroidx.tracing.Traceعلى مستويات واجهة برمجة التطبيقات الأقل، وذلك باستخدامforceEnableAppTracingداخل التطبيق المستهدف. (Id7b68، b/231455742)
إصلاح الأخطاء
- تحسين أمان جميع أوامر shell الداخلية من خلال التحقّق من صحة جميع المخرجات/الأخطاء (I5984d، b/255402908، b/253094958)
- حدِّد الجهاز في الأمر
adb pullللملف الأساسي، حتى يمكن نسخ أمر السحب ببساطة في حال ربط عدة أجهزة (ما يصل إلى محاكي واحد) (I6ac6c، b/223359380) - إضافة خطأ إذا لم يتم إعداد حزمة APK لاختبار Macrobenchmark على أنّها ذاتية القياس. يمنع هذا الخطأ إجراء قياس الأداء على مستوى النظام من داخل عملية التطبيق المستهدف. في هذه الحالة، لن يتمكّن Macrobenchmark من تجميع التطبيق أو إيقافه أو بدء تشغيله على البارد، أو التحكّم في أذوناته (I4279b).
- تم إصلاح مشكلة في
measureRepeated()حيث لا يؤديStartupMode.COLDإلى إيقاف العملية المستهدَفة بعدsetupBlock. الآن، لن يؤدي التفاعل مع التطبيقsetupBlockإلى إيقاف عملية تشغيل التطبيق، ولن يتم تسجيل قياس غير صالح للتشغيل على البارد. (I8ebb7)
الإصدار 1.2.0-alpha06
24 أكتوبر 2022
تم طرح androidx.benchmark:benchmark-*:1.2.0-alpha06. يتضمّن الإصدار 1.2.0-alpha06 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
BaselineProfileRuleلم يعُد يتطلّب الوصول إلى الجذر على Android 13 (المستوى 33 لواجهة برمجة التطبيقات)، ولم يعُد في مرحلة تجريبية. (Ie0a7d، b/250083467، b/253094958)- يحلّ هذا التغيير أيضًا مشكلة طريقة نقل الملفات الشخصية من تطبيق إلى القرص على الأجهزة غير المجذَّرة، ولكنّه يتطلّب تعديل تبعية profileinstaller للتطبيق المستهدَف.
- لاستخدام
BaselineProfileRuleأوCompilationMode.Partial(warmupIterations)على جهاز غير مجذَّر، يجب أيضًا تحديث التطبيق المستهدَف لاستخدامandroidx.profileinstaller.profileinstaller:1.3.0-alpha01. يتيح ذلك نقل الملف الشخصي إلى القرص بشكل صحيح، حتى يمكن تجميعه/استخراجه.
إصلاح الأخطاء
- إصلاح عُطل
SampledProfilingعلى الإصدار 33 من واجهة برمجة التطبيقات والإصدارات الأحدث (I40743، b/236109374)
الإصدار 1.2.0-alpha05
5 أكتوبر 2022
تم طرح androidx.benchmark:benchmark-*:1.2.0-alpha05. يتضمّن الإصدار 1.2.0-alpha05 هذه التعديلات.
إصلاح الأخطاء
- إصلاح تقسيم اللقطات في أداة "عرض تتبُّع النظام" في "استوديو Android" للعمليات التي تم تسجيلها في مقياس الأداء (I3f3ae، b/239677443)
- تعديل
FrameTimingMetricلإدراجFrameOverrunعلى أنّه يتطلّب استخدام الإصدار 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 هذه التعديلات.
الميزات الجديدة
إضافة دعم لوسيطة
dryRunMode.enableفي Macrobenchmark (متوفّرة حاليًا في Microbenchmark) لتسريع عملية التطوير المحلية والتحقّق من صحة التشغيل الآلي للتطبيقات (على سبيل المثال، في عملية الإرسال المسبق). يؤدي ذلك إلى إلغاء التكرارات إلى 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(). وهذا يعني أنّ المقياس يمكنه رصد عمليات الإطلاق من الإشعارات، على سبيل المثال،Context.startActivity()أو التنقّل المستند إلى النشاط داخل التطبيق أو أوامر shell. (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 هذه التعديلات.
الميزات الجديدة
- تمت إضافة واجهات برمجة تطبيقات تجريبية لاستخدام
BenchmarkStateبشكل مستقل، أي بشكل منفصل عنBenchmarkRule/JUnit4. (Id478f، b/228489614)
إصلاح الأخطاء
- تمت إضافة خيار احتياطي لتقنية Leanback في
startActivityAndWait. (01ed77، b/242899915)
الإصدار 1.2.0-alpha02
24 أغسطس 2022
تم طرح androidx.benchmark:benchmark-*:1.2.0-alpha02. يتضمّن الإصدار 1.2.0-alpha02 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
- استخدام
am force stopتلقائيًا فيMacrobenchmarkScope.killProcess()، حتى عند الوصول إلى الجذر، باستثناء أثناء إنشاء "ملف المرجع" يمكن إلغاء ذلك باستخدام وسيط منطقي اختياري. (02cce9، b/241214097)
إصلاح الأخطاء
- إتاحة إنشاء ملفات تعريف مرجعية لتطبيقات النظام (I900b8، b/241214097)
- إتاحة التحقّق من مقاييس الطاقة في ODPM على الأجهزة غير المزودة بحق الوصول إلى الجذر (a38c78، b/229623230)
الإصدار 1.2.0-alpha01
27 يوليو 2022
تم طرح androidx.benchmark:benchmark-*:1.2.0-alpha01. يتضمّن الإصدار 1.2.0-alpha01 هذه التعديلات.
الميزات الجديدة
- مكوّن tracing-perfetto-common جديد يتيح للأدوات تفعيل تتبُّع حزمة تطوير البرامج (SDK) في Perfetto في تطبيق يعرضه (I2cc7f)
تمت إضافة وسيطة
androidx.benchmark.enabledRulesللأدوات من أجل تفعيل فلترة عمليات تشغيل اختبارات macrobenchmark لتشمل المقاييس فقط أو إنشاء ملفات تعريف أساسية فقط. يمكنك إدخال Macrobenchmark أو BaselineProfile لتشغيل نوع واحد فقط من الاختبارات، مثلاً عند إنشاءBaselineProfilesعلى محاكي فقط. يمكن أيضًا استخدام قائمة مفصولة بفواصل. (I756b7، b/230371561)على سبيل المثال، في ملف build.gradle الخاص باختبار Macrobenchmark:
android { defaultConfig { testInstrumentationRunnerArgument 'androidx.benchmark.enabledRules', 'BaselineProfile' } }أو من سطر أوامر Gradle:
./gradlew macrobenchmark:cC -P android.testInstrumentationRunnerArguments.androidx.benchmark.enabledRules=BaselineProfile
تغييرات واجهة برمجة التطبيقات
- تمت إضافة
PowerMetricجديد لقياس مهام الطاقة والقدرة في مقاييس الأداء. (I9f39b، b/220183779) - تمت إضافة وضع تجميع جديد
CompilationMode.Ignoreلتخطّي إعادة ضبط الملف الشخصي والتجميع. (Ibbcf8، b/230453509) - تمت إضافة مَعلمة جديدة إلى
BaselineProfileRule#collectBaselineProfileلفلترة ملف الإخراج حسب أسماء الحِزم (If7338، b/220146561) - يسمح هذا الخيار للمطوّر بتفريغ شحن الجهاز لقياس استهلاك الطاقة. (I6a6cb)
- تمت إضافة إمكانية محو ذاكرة التخزين المؤقت لبرامج التظليل في
MacrobenchmarkScope. (I32122) - تتيح للمطوّر إعداد عرض نوع المقياس وفئات الأنظمة الفرعية المطلوبة. (I810c9)
- في السابق، كان يتم عرض
UnsupportedOperationExceptionفي مقياس الأداء إذا تم تشغيله على جهاز غير متوافق. لا يحدث خطأ UOE الآن إلا إذا تم استخدام المقياس على الجهاز غير المتوافق (مثلPowerMetric.configure). (I5cf20، b/227229375) - تمت إضافة
TotalPowerMetricوTotalEnergyMetricلقياس إجمالي الطاقة واستهلاكها في كل فئة من فئات الأنظمة في اختبارات الأداء الشاملة. (I3b26b، b/224557371)
إصلاح الأخطاء
- تم إصلاح مشكلة عدم إعادة ضبط الطرق المجمَّعة بشكلٍ صحيح بين كل اختبار macrobenchmark على الإصدارات غير الجذرية. يتطلّب ذلك للأسف إعادة تثبيت حزمة APK في كل تكرار، ما سيؤدي إلى محو بيانات التطبيق لكل اختبار Macrobenchmark. (I31c74، b/230665435)
- إصلاح عُطل تسجيل التتبُّع على الإصدارَين 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 هذه التعديلات.
إصلاح الأخطاء
- إصلاح الخطأ
android.system.ErrnoException: open failed: EACCESالذي كان يحدث على بعض الأجهزة التي تعمل بالإصدار 11 من نظام التشغيل Android (المستوى 30 لواجهة برمجة التطبيقات) أو الإصدارات الأحدث. هذا إصلاح تم نقله من1.2.0-alpha01. (aosp/2072249)
الإصدار 1.1.0
الإصدار 1.1.0
15 يونيو 2022
تم طرح androidx.benchmark:benchmark-*:1.1.0. يتضمّن الإصدار 1.1.0 هذه التعديلات.
- هذا الإصدار مطابق للإصدار
androidx.benchmark:benchmark-*:1.1.0-rc03.
التغييرات المهمة منذ الإصدار 1.0.0
يتيح لك التوافق مع Jetpack Macrobenchmarks، الذي يتيح لك قياس تفاعلات التطبيق الكامل مثل بدء التشغيل والتمرير، إمكانية تسجيل عمليات التتبُّع وقياس أقسام عمليات التتبُّع.
إتاحة ملفات Baseline Profile
CompilationMode.Partialلقياس فعالية "ملفات المرجع".@BaselineProfileRuleلإنشاء ملفات تعريف أساسية تلقائيًا لرحلة مستخدم مُحدّدة ومهمة.
إتاحة مقاييس التخصيص وإنشاء الملفات الشخصية أثناء عمليات تشغيل الاختبارات المصغّرة
الإصدار 1.1.0-rc03
1 يونيو 2022
تم طرح androidx.benchmark:benchmark-*:1.1.0-rc03. يتضمّن الإصدار 1.1.0-rc03 هذه التعديلات.
إصلاح الأخطاء
تجنَّب إعادة تثبيت الحزمة المستهدَفة في كل تكرار من اختبار الأداء. ( aosp/2093027 وb/231976084)
إزالة التأخير
300msمنpressHome()(aosp/2086030 وb/231322975)تحسين سرعة تكرار Macrobenchmark من خلال تحسين أوامر Shell المستخدَمة في الخلفية (aosp/2086023 وb/231323582)
إتاحة استخدام الأجهزة المُدارة من Gradle عند إنشاء "ملفات تعريف Baseline" باستخدام Macrobenchmarks (aosp/2062228 وb/228926421)
الإصدار 1.1.0-rc02
11 مايو 2022
تم طرح androidx.benchmark:benchmark-*:1.1.0-rc02. يتضمّن الإصدار 1.1.0-rc02 هذه التعديلات.
- يُرجى العِلم أنّ هذا الإصدار يتضمّن تغييرًا في السلوك، إذ يتم الآن إعادة تثبيت التطبيقات بالكامل بين كل مقياس أداء لضمان دقة القياسات.
إصلاح الأخطاء/التغييرات في السلوك
تم إصلاح مشكلة عدم إعادة ضبط تجميع التطبيق بشكلٍ صحيح بين اختبارات الأداء الكبيرة، وعدم إعادة ضبطه على الإطلاق في الإصدارات غير المجذّرة. يحلّ هذا الإجراء العديد من الحالات التي يؤدي فيها إجراء اختبارات متعددة إلى عدم تأثير
CompilationModeفي القياسات أو تأثيره بشكل طفيف. لحلّ هذه المشكلة، يعيد التطبيق المستهدَف الآن تثبيت كل طريقة اختبار بالكامل، ما يؤدي إلى محو بيانات التطبيق بين كل اختبار Macrobenchmark. (I31c74، b/230665435)بما أنّ هذا الإعداد يمنع التطبيقات من إعداد الحالة قبل الاختبارات، أصبح من الممكن الآن تخطّي عملية التجميع أو إعادة التثبيت لتجنُّب هذه المشكلة. يمكنك مثلاً تجميع الهدف بالكامل باستخدام أمر shell
cmd package compile -f -m speed <package>، ثم تجاوز خطوة التجميع في Macrobenchmark.على سبيل المثال، في ملف build.gradle الخاص باختبار Macrobenchmark:
android { defaultConfig { testInstrumentationRunnerArgument 'androidx.benchmark.compilation.enabled, 'false' } }أو من سطر أوامر Gradle:
./gradlew macrobenchmark:cC -P android.testInstrumentationRunnerArguments.androidx.benchmark.compilation.enabled=falseأتحنا إمكانية مشاركة وحدة بين اختبارات إنشاء "الملف الشخصي الأساسي" واختبارات قياس الأداء الشامل من خلال إضافة وسيطة أداة
androidx.benchmark.enabledRules. يمكنك إدخال Macrobenchmark أو BaselineProfile لتشغيل نوع واحد فقط من الاختبارات، مثلاً عند إنشاءBaselineProfilesعلى محاكي. (I756b7، b/230371561)على سبيل المثال، في ملف build.gradle الخاص باختبار Macrobenchmark:
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 هذه التعديلات.
إصلاح الأخطاء
- تستخدم روابط إخراج ملفات "الملف الأساسي" في "استوديو Android" الآن اسم ملف فريدًا. بهذه الطريقة، تعكس النتائج دائمًا أحدث نتائج استخدام
BaselineProfileRule. ( aosp/2057008 وb/228203086 )
الإصدار 1.1.0-beta06
6 أبريل 2022
تم طرح androidx.benchmark:benchmark-*:1.1.0-beta06. يتضمّن الإصدار 1.1.0-beta06 هذه التعديلات.
إصلاح الأخطاء
- إصلاح عُطل تسجيل التتبُّع على الإصدار 21 أو 22 من واجهة برمجة التطبيقات (If7fd6، b/227509388)
- إصلاح آلية رصد اكتمال تشغيل الأنشطة لتصحيح الاستثناء "تعذّر قراءة أي مقاييس" في اختبارات الأداء الكبيرة عند بدء التشغيل (Ia517c)
- إصلاح مقاييس بدء التشغيل في Macrobenchmarks عند استخدام
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) - تم إصلاح المشكلة المتمثّلة في عدم قدرة Macrobenchmarks على جمع مقاييس بدء التشغيل عند استخدام
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 (المستوى 29 من واجهة برمجة التطبيقات) والإصدارات الأحدث. يؤدي ذلك إلى تقليل عدد النتائج الإيجابية الخاطئة بشكل كبير في رصد الحدّ من سرعة المعالج بسبب الحرارة (إعادة اختبار الأداء بعد فترة تهدئة مدتها 90 ثانية)، كما يؤدي إلى تسريع اختبارات الأداء بشكل كبير على إصدارات المستخدمين. وتوفّر أيضًا ميزة رصد التقييد حتى عندما تكون السرعات مقفلة (إذا كانت السرعات المقفلة أعلى من اللازم بالنسبة إلى البيئة المادية للجهاز). (I9c027، b/217497678، b/131755853)فلترة ملفات تعريف الأداء التي تم أخذ عيّنات منها في simpleperf لعرض
measureRepeatedسلسلة محادثات فقط لتسهيل الفحص (Ic3e12، b/217501939)إتاحة مقاييس من العمليات الفرعية المسماة لواجهة المستخدم في التطبيقات المتعددة العمليات (Ice6c0، b/215988434)
فلترة قواعد "الملف الأساسي" لاستهداف الإصدار 9 من نظام التشغيل Android (حزمة تطوير البرامج (SDK) 28) aosp/1980331 b/216508418
تخطّي تثبيت الملف الشخصي عند استخدام
Compilation.None()بالإضافة إلى ذلك، يتم عرض تحذيرات عند استخدام التطبيق لإصدار قديم منandroidx.profileinstallerو"المكوّن الإضافي لنظام Gradle المتوافق مع Android". aosp/1977029
الإصدار 1.1.0-beta03
9 فبراير 2022
تم طرح androidx.benchmark:benchmark-*:1.1.0-beta03. يتضمّن الإصدار 1.1.0-beta03 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
- تمت إضافة
AudioUnderrunMetricإلى مكتبة Macrobenchmark ضمن علامة تجريبية للسماح برصد نقص البيانات الصوتية (Ib5972) لم يعُد
BaselineProfileRuleيقبل حظرsetupلأنّ هذه الوظيفة كانت مماثلة لوظيفةprofileBlock. (Ic7dfe، b/215536447)على سبيل المثال
@Test fun collectBaselineProfile() { baselineRule.collectBaselineProfile( packageName = PACKAGE_NAME, setupBlock = { startActivityAndWait() }, profileBlock = { // ... } ) }@Test fun collectBaselineProfile() { baselineRule.collectBaselineProfile( packageName = PACKAGE_NAME, profileBlock = { startActivityAndWait() // ... } ) }
إصلاح الأخطاء
- تم إصلاح المشكلة التي كانت تؤدي إلى عدم تعديل عمليات تتبُّع أداة تحليل الأداء المصغّرة في عمليات التشغيل اللاحقة عند ربطها في ناتج Studio (I5ae4d، b/214917025)
- منع أوامر shell الخاصة بالتجميع على الإصدار 23 من واجهة برمجة التطبيقات (Ice380)
- تمت إعادة تسمية
FrameCpuTimeإلىFrameDurationCpu، وFrameUiTimeإلىFrameDurationUiلتوضيح أنّ هذه القيم هي مدة وليس طوابع زمنية، ولتتطابق مع البادئات. (I0eba3، b/216337830)
الإصدار 1.1.0-beta02
26 يناير 2022
تم طرح androidx.benchmark:benchmark-*:1.1.0-beta02. يتضمّن الإصدار 1.1.0-beta02 هذه التعديلات.
إصلاح الأخطاء
- يتم الآن ربط نتائج "أخذ عيّنات من سلسلة استدعاء الدوال البرمجية" / "تتبُّع أسلوب" القياسات الصغيرة في ناتج "استوديو Android"، على غرار نواتج القياس الأخرى، ولا يتم إخفاء مقياس التخصيص. (Idcb65، b/214440748، b/214253245)
- تعرض BaselineProfileRule الآن الأمر
adb pullفي logcat وفي ناتج "استوديو Android" لسحب ملف نصي BaselineProfile تم إنشاؤه. (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) - تم تغيير وسيطة ملف تعريف خط الأساس
CompilationMode.Partialإلى تعداد لتوضيحها. (Id67ea)
الإصدار 1.1.0-alpha13
15 كانون الأول (ديسمبر) 2021
تم طرح androidx.benchmark:benchmark-*:1.1.0-alpha13. يتضمّن الإصدار 1.1.0-alpha13 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
- إضافة ميزة "تتبُّع نشاط النظام" ذات الحمل المنخفض إلى ناتج اختبار الأداء المصغّر على Android Q (المستوى 29 من واجهة برمجة التطبيقات أو أعلى)، مع العلم أنّ هذه الميزة لا تسجّل حاليًا عمليات التتبُّع المخصّصة (عبر واجهات برمجة التطبيقات
android.os.Traceأوandroidx.tracingمن Jetpack) لتجنُّب التأثير في النتائج. يجب أن يكون هذا التتبُّع مفيدًا في تشخيص حالات عدم الاستقرار، خاصةً من المصادر خارج مقياس الأداء. (I298be، b/205636583، b/145598917) - وضِّح
CompilationModesفي ثلاث فئات: "كامل" و"بلا" و"جزئي". في السابق، كانت تتم تسميتها بشكل غير متّسق استنادًا إلى وسيطات التجميع (التي نتعامل معها الآن على أنّها تفاصيل التنفيذ) والميزات. ويجعل ذلك المقايضات والمجموعات المحتملة والسلوك على مستوى إصدارات المنصة أكثر وضوحًا. (I3d7bf، b/207132597) - يتم الآن إعداد مقياس وقياسه دائمًا في أزواج وبالترتيب. يمكنك الآن طلب اسم الحزمة والتكرار (على الرغم من أنّ التكرار قد يكون
nullفي سيناريوهات الإحماء معيّنة). (Id3b68، b/208357448، b/208369635)
إصلاح الأخطاء
- تم التعامل مع القيمة الثابتة
CompilationMode.Speedبشكل غير صحيح على أنّهاNone(I01137)
الإصدار 1.1.0-alpha12
17 تشرين الثاني (نوفمبر) 2021
تم طرح androidx.benchmark:benchmark-*:1.1.0-alpha12. يتضمّن الإصدار 1.1.0-alpha12 هذه التعديلات.
الميزات الجديدة
- إضافة TraceSectionMetric تجريبية لقياسات التوقيت المخصّصة المستندة إلى التتبُّع (I99db1، b/204572664)
إصلاح الأخطاء
- تنشيط الجهاز في كل تكرار لضمان إمكانية اختبار واجهة المستخدم، ويتطلّب ذلك إيقاف شاشة القفل. (Ibfa28، b/180963442)
- إصلاح أعطال متعدّدة في وضع تحليل الأداء StackSampling على المحاكيات والأجهزة غير المجذَّرة (Icdbda، b/202719335)
- تمت إزالة فترة النوم التي تبلغ 0.5 ثانية في نهاية كل تكرار. إذا لاحظت فقدان مقاييس مع هذا التغيير، يُرجى الإبلاغ عن خطأ. (Iff6aa)
- تقليل فرص فقدان البيانات، وتقليل الحمل الزائد على الذاكرة الناتج عن التتبُّع (Id2544 وb/199324831 وb/204448861)
- تقليل حجم التتبُّع بنسبة% 40 تقريبًا من خلال التبديل إلى تنسيق تخزين sched المضغوط (Id5fb6، b/199324831)
- تم تعديل عمليات تنفيذ مقاييس بدء التشغيل لتنتهي دائمًا في نهاية سلسلة عرض الصور. سيكون هذا السلوك أكثر اتساقًا على مستوى إصدارات المنصة، كما سيكون أكثر تطابقًا مع مقاييس الإحالات الناجحة داخل التطبيق. (Ic6b55)
الإصدار 1.1.0-alpha11
3 نوفمبر 2021
تم طرح androidx.benchmark:benchmark-*:1.1.0-alpha11. يتضمّن الإصدار 1.1.0-alpha11 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
- يتضمّن Macrobenchmark الآن
minSdkVersionبقيمة23. (If2655) - تضيف هذه السمة
BaselineProfileRuleتجريبية جديدة يمكنها إنشاء ملفات تعريف أساسية لرحلة المستخدم المهمة في التطبيق. سنقدّم مستندات تفصيلية في وقت لاحق. (Ibbefa، b/203692160) - تزيل هذه السمة نوع الواجهة measureRepeated الذي تمت إضافته للمتصلين بلغة Java، لأنّه تسبّب في غموض عند إكمال/حلّ الطريقة. على مستخدمي Java إعادة Unit.Instance من measureRepeated. إذا كان هذا الأمر يسبّب لك إزعاجًا، يُرجى تقديم تقرير بالخلل، وسنعيد النظر في هذه المشكلة في إصدار مستقبلي. (Ifb23e، b/204331495)
الإصدار 1.1.0-alpha10
27 أكتوبر 2021
تم طرح androidx.benchmark:benchmark-*:1.1.0-alpha10. يتضمّن الإصدار 1.1.0-alpha10 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
- إعادة StartupTimingMetric إلى الإصدارات القديمة لتعمل على الإصدار 23 من واجهة برمجة التطبيقات تتيح هذه الطريقة الجديدة أيضًا التعامل بشكل أفضل مع الدالة reportFullyDrawn() لانتظار عرض المحتوى ذي الصلة. (If3ac9، b/183129298)
- تمت إضافة JvmOverloads إلى طرق MacrobenchmarkScope المتعددة للمتصلين بلغة Java. (I644fe، b/184546459)
- توفير دالة MacrobenchmarkRule.measureRepeated بديلة تستخدم
Consumer<MacrobenchmarkScope>للاستخدام الاصطلاحي في لغة Java (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 هذه التعديلات.
إصلاح الأخطاء
- إتاحة إيقاف ذاكرة التخزين المؤقت لصفحة Kernel بدون إذن الوصول إلى الجذر على الإصدار 31 من واجهة برمجة التطبيقات (API) أو الإصدارات الأحدث، ما سيؤدي إلى زيادة دقة عمليات التشغيل StartupMode.COLD (Iecfdb، b/200160030)
الإصدار 1.1.0-alpha08
29 سبتمبر 2021
تم طرح androidx.benchmark:benchmark-*:1.1.0-alpha08. يتضمّن الإصدار 1.1.0-alpha08 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
- تفعيل مقاييس الأداء الكبيرة التي تتضمّن التمرير السريع لتتوافق مع الإصدار 23 من واجهة برمجة التطبيقات (If39c2، b/183129298)
- إضافة نوع جديد من المقاييس المستندة إلى عيّنات إلى واجهة المستخدم وإخراج JSON، مع التركيز على النسب المئوية لعدّة عيّنات لكل تكرار (I56247، b/199940612)
- التبديل إلى مقاييس النقطة العائمة في جميع مكتبات قياس الأداء (يتم اقتطاعها في واجهة مستخدم "استوديو Android"). (I69249، b/197008210)
الإصدار 1.1.0-alpha07
1 سبتمبر 2021
تم طرح androidx.benchmark:benchmark-*:1.1.0-alpha07. يتضمّن الإصدار 1.1.0-alpha07 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
- تم رفع الحد الأدنى لمستوى واجهة برمجة التطبيقات إلى 21 ليعكس أدنى مستوى لواجهة برمجة التطبيقات من المفترض أن يكون متوافقًا في المستقبل. سيستمر عرض الحد الأدنى الحالي من مستوى واجهة برمجة التطبيقات المتوافق من خلال RequiredApi()، وهو حاليًا 29 (I440d6، b/183129298).
إصلاح الأخطاء
- إصلاحات
ProfileInstallerلتسهيل تشغيل تطبيقات تستخدم ملفات تعريف أساسية لاختبارات MacroBenchmark باستخدام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 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
- تمت إضافة وسيط
androidx.benchmark.iterationsللأدوات من أجل السماح بتجاوز عدد التكرارات يدويًا عند الاختبار أو إنشاء الملفات الشخصية محليًا. (6188be، b/194137879)
إصلاح الأخطاء
- تم التبديل إلى Simpleperf كأداة تلقائية لإنشاء ملفات تعريف العيّنات في الإصدار 29 من واجهة برمجة التطبيقات أو الإصدارات الأحدث. (Ic4b34، b/158303822)
المشاكل المعروفة
- لا يزال "
CompilationMode.BaselineProfile" قيد التطوير. تجنَّب استخدامها لتحديد مدى ملاءمة الملف الشخصي في الوقت الحالي.
الإصدار 1.1.0-alpha05
4 أغسطس 2021
تم طرح androidx.benchmark:benchmark-*:1.1.0-alpha05. يتضمّن الإصدار 1.1.0-alpha05 هذه التعديلات.
تم إلغاء الإصدار 1.1.0-alpha04 قبل إصداره بسبب حدوث عُطل متقطع. b/193827052
تغييرات واجهة برمجة التطبيقات
- تم التبديل إلى startActivityAndWait لتفعيل التشغيل من خلال
am start، ما يقلّل وقت كل تكرار للقياس بمقدار 5 ثوانٍ تقريبًا، ولكن لن يكون من الممكن استخدام حِزم الأهداف. (I5a6f5، b/192009149
إصلاح الأخطاء
- تقليل حساسية رصد الحد الأقصى للتردد الحراري، وإعادة احتساب خط الأساس إذا تم رصد الحدود القصوى بشكل متكرر (I7327b)
- إصلاح FrameTimingMetric لتعمل على الإصدار التجريبي من Android S (Ib60cc، b/193260119)
- استخدِم
EmptyActivityلإخراج التطبيق المستهدَف من حالة الإيقاف القسري من أجل توفير دعم أفضل لميزةCompilationMode.BaselineProfile. (Id7cac، b/192084204) - تم تغيير امتداد ملف التتبُّع إلى
.perfetto-traceليتوافق مع معيار النظام الأساسي. (I4c236، b/174663039) - تعرض StartupTimingMetric الآن المقياس "fullyDrawnMs" لقياس الوقت المستغرَق حتى يكتمل عرض تطبيقك. لتحديد هذا المقياس لتطبيقك، استدعِ الدالة Activity.reportFullyDrawn عندما يكون المحتوى الأولي جاهزًا، مثلاً عند تحميل عناصر القائمة الأولية من قاعدة البيانات أو الشبكة. (تتوفّر طريقة reportFullyDrawn بدون عمليات تحقّق من إصدار التصميم على ComponentActivity). يُرجى العِلم أنّه يجب تشغيل الاختبار لفترة كافية لتسجيل المقياس (لا تنتظر الدالة startActivityAndWait اكتمال عرض الصفحة). (If1141، b/179176560)
- تقليل تكلفة إلحاق البيانات الوصفية لواجهة المستخدم بعمليات التتبُّع بأكثر من 50 ملي ثانية (Ic8390، b/193923003)
- زيادة كبيرة في معدّل تكرار الاستطلاع عند إيقاف التتبُّع، ما يمكن أن يقلّل من وقت تشغيل مقياس الأداء عند بدء التشغيل بنسبة %30 أو أكثر (Idfbc1، b/193723768)
الإصدار 1.1.0-alpha03
16 حزيران (يونيو) 2021
تم طرح androidx.benchmark:benchmark-*:1.1.0-alpha03. يتضمّن الإصدار 1.1.0-alpha03 هذه التعديلات.
الميزات الجديدة
- تمت إضافة
CompilationMode.BaselineProfileجديد لدعم الملفات الشخصية المثبَّتة باستخدام مكتبة Jetpack ProfileInstaller. (aosp/1720930)
إصلاح الأخطاء
تم تعديل نموذج رمز Gradle لإيقاف أخطاء قياس الأداء من أجل استخدام واجهة برمجة تطبيقات غير متوقّفة نهائيًا مع صيغة تتوافق أيضًا مع مستخدمي .gradle.kts.
مثلاً:
testInstrumentationRunnerArguments["androidx.benchmark.suppressErrors"] = "EMULATOR,LOW-BATTERY"
الإصدار 1.1.0-alpha02
18 أيار (مايو) 2021
يوفّر الإصدار 1.1.0-alpha02 من أداة القياس أداة Macrobenchmark التي تُعدّ من المكوّنات المهمة في عملية القياس. بالإضافة إلى أنّ benchmark يتيح لك قياس حلقات وحدة المعالجة المركزية، يتيح لك macrobenchmark قياس تفاعلات التطبيق بأكمله، مثل بدء التشغيل والتمرير، وتسجيل عمليات التتبُّع. لمزيد من المعلومات، يُرجى الاطّلاع على مستندات المكتبة.
تم طرح androidx.benchmark:benchmark-*:1.1.0-alpha02. يتضمّن الإصدار 1.1.0-alpha02 هذه التعديلات.
الميزات الجديدة
تمت إضافة عناصر Macrobenchmark (androidx.benchmark:benchmark-macro-junit4 وandroidx.benchmark:benchmark-macro)
- تسجيل مقاييس أداء بدء التشغيل والتمرير/الصور المتحركة من تطبيقك، سواء على الجهاز أو في عملية الدمج المتواصل
- تسجيل عمليات التتبُّع وفحصها من داخل "استوديو Android"
إصلاح الأخطاء
- حلّ مشكلة أذونات shell في دليل الإخراج على نظام التشغيل Android 12 (ملاحظة: قد يتطلّب ذلك تحديث المكوّن الإضافي لنظام Gradle المتوافق مع Android إلى الإصدار التجريبي 7.0.0 وتحديث 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 هذه التعديلات.
الميزات الجديدة في الإصدار 1.1
- مقياس التخصيص: يتم الآن تشغيل مرحلة إضافية في مقاييس الأداء بعد مرحلة الإعداد والوقت، ما يؤدي إلى تسجيل أعداد التخصيص. يمكن أن تتسبّب عمليات التخصيص في حدوث مشاكل في الأداء على الإصدارات القديمة من النظام الأساسي (أصبح 140ns في الإصدار O هو 8ns في الإصدار M - تم قياسه على Nexus5X، مع ساعات مغلقة). يتم عرض هذا المقياس في ناتج وحدة تحكّم "استوديو Android"، بالإضافة إلى
- إتاحة إنشاء ملفات تعريف: يمكنك الآن تسجيل بيانات إنشاء ملفات التعريف لتنفيذ اختبار الأداء، وذلك لمعرفة سبب بطء تشغيل الرموز البرمجية. يتيح Benchmark تسجيل تتبُّع الطريقة أو أخذ عيّنات من الطريقة من ART. يمكن فحص هذه الملفات باستخدام "أداة تحليل الأداء" داخل "استوديو Android" من خلال النقر على ملف > فتح.
- يوفّر المكوّن الإضافي Benchmark Gradle الآن إعدادات تلقائية لتسهيل عملية الإعداد:
- يتم ضبط
testBuildTypeعلى الإصدار تلقائيًا، وذلك لتجنُّب استخدام التبعيات التي تتضمّن تغطية التعليمات البرمجية. يتم أيضًا ضبط release buildType كنوع الإصدار التلقائي، ما يتيح لـ "استوديو Android" اختيار صيغة الإصدار الصحيحة تلقائيًا عند فتح مشروع للمرة الأولى. (b/138808399) - يتم استخدام
signingConfig.debugكإعداد تلقائي للتوقيع (b/153583269)
- يتم ضبط
** إصلاح الأخطاء **
- تم تقليل الحمل الزائد للانتقال إلى وضع الإحماء بشكل كبير، حيث كان القياس الأول لكل معيار أعلى بشكل مصطنع من غيره. كانت هذه المشكلة أكثر وضوحًا في مقاييس الأداء الصغيرة جدًا (جزء من مليون من الثانية أو أقل). (b/142058671)
- تم إصلاح الخطأ
InstrumentationResultParserالذي يظهر لكل مقياس أداء عند التشغيل من سطر الأوامر. (I64988، b/154248456)
المشاكل المعروفة
- لا تعرض استدعاءات Gradle لـ Benchmark نتائج مباشرةً من سطر الأوامر. يمكنك حلّ هذه المشكلة من خلال تنفيذ العملية في Studio أو تحليل ملف إخراج JSON للحصول على النتائج.
- يتعذّر على ميزة "إعداد التقارير عن الأداء" استرداد التقرير من الأجهزة التي تم تثبيت تطبيق عليها باستخدام applicationId ينتهي بـ "android" أو "download" (غير حساسة لحالة الأحرف). على المستخدمين الذين يواجهون هذه المشكلة ترقية المكوّن الإضافي لنظام Gradle المتوافق مع Android إلى الإصدار 4.2-alpha01 أو إصدار أحدث.
الإصدار 1.0.0
الإصدار 1.0.0 من Benchmark
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
تتيح لك مكتبة Benchmark كتابة مقاييس أداء لرموز التطبيق والحصول على النتائج بسرعة.
وتمنع حدوث مشاكل في إعدادات الإصدار ووقت التشغيل، وتعمل على تثبيت أداء الجهاز لضمان دقة القياسات واتّساقها. يمكنك تشغيل اختبارات الأداء مباشرةً في "استوديو Android" أو في عملية الدمج المتواصل لمراقبة أداء الرمز البرمجي بمرور الوقت ومنع حدوث تراجعات.
تشمل الميزات الرئيسية ما يلي:
- تثبيت الساعة
- تحديد أولوية سلاسل المحادثات تلقائيًا
- إتاحة اختبار أداء واجهة المستخدم، مثل نموذج RecyclerView
- التسخين والتكرار المتوافقان مع التجميع أثناء التنفيذ
- ناتج مقياس الأداء بتنسيق JSON للمعالجة اللاحقة
الإصدار 1.0.0-rc01
23 تشرين الأول (أكتوبر) 2019
تم طرح ميزات androidx.benchmark:benchmark-common:1.0.0-rc01 وandroidx.benchmark:benchmark-gradle-plugin:1.0.0-rc01 وandroidx.benchmark:benchmark-junit4:1.0.0-rc01. يتضمّن الإصدار 1.0.0-rc01 هذه التعديلات.
الميزات الجديدة
- تمت إضافة تتبُّع systrace إلى مقاييس الأداء
إصلاح الأخطاء
- تم إصلاح مشكلة عدم استقرار المقاييس حيث لا تنتهي عملية JIT قبل الإحماء بسبب خفض الأولوية (b/140773023)
- دليل موحّد لإخراج ملفات JSON في الإصدارَين 3.5 و3.6 من المكوّن الإضافي لنظام Gradle المتوافق مع Android
الإصدار 1.0.0-beta01
9 أكتوبر 2019
تم طرح ميزات androidx.benchmark:benchmark-common:1.0.0-beta01 وandroidx.benchmark:benchmark-gradle-plugin:1.0.0-beta01 وandroidx.benchmark:benchmark-junit4:1.0.0-beta01. يتضمّن الإصدار 1.0.0-beta01 هذه التعديلات.
الميزات الجديدة
- تنفيذ عملية جمع البيانات غير الضرورية قبل كل عملية إعداد مسبق لتقليل الضغط على الذاكرة من أحد مقاييس الأداء إلى المقياس التالي (b/140895105)
إصلاح الأخطاء
- تمت إضافة التبعية
androidx.annotation:android-experimental-lint، حتى يعرض رمز Java أخطاء Lint بشكل صحيح عند عدم استخدام واجهة برمجة التطبيقات التجريبية، على غرار ما توفّره التعليقات التوضيحية التجريبية في Kotlin لمستخدمي Kotlin. - يرصد الآن بشكل صحيح استخدام وسيطة
additionalTestOutputDirللأدوات من أجل الإخراج في الإصدار 3.6 من المكوّن الإضافي لنظام Gradle المتوافق مع Android، وذلك لمعرفة الوقت الذي سيتولّى فيه المكوّن الإضافي لنظام Gradle المتوافق مع Android عملية نسخ البيانات. - إصلاح مشكلة عدم رصد تردد الساعة في ملف JSON لعرض
-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 وandroidx.benchmark:benchmark-junit4:1.0.0-alpha06. يتضمّن الإصدار 1.0.0-alpha06 هذه التعديلات.
الميزات الجديدة
- تمت إضافة عملية تحقّق من الاستخدام غير الصحيح للحزمة القديمة لتطبيق Test Runner، والتي تقدّم الآن رسالة خطأ أكثر فائدة
تغييرات واجهة برمجة التطبيقات
- أصبحت التعليقات التوضيحية التجريبية
ExperimentalAnnotationReportمتاحة للجميع بشكل صحيح. يتطلّب استخدام واجهة برمجة التطبيقات التجريبية BenchmarkState#report الآن هذا التعليق التوضيحي
الإصدار 1.0.0-alpha05
5 أيلول (سبتمبر) 2019
تم طرح ميزات androidx.benchmark:benchmark-common:1.0.0-alpha05 وandroidx.benchmark:benchmark-gradle-plugin:1.0.0-alpha05 وandroidx.benchmark:benchmark-junit4:1.0.0-alpha05. يمكنك الاطّلاع على التعديلات في هذا الإصدار هنا.
تغييرات واجهة برمجة التطبيقات
- تم الآن تصنيف واجهة برمجة التطبيقات
BenchmarkState.reportDataعلى أنّها تجريبية
إصلاح الأخطاء
- تم إصلاح البرنامج النصي لقفل الساعة الذي كان يتعذّر تنفيذه على الأجهزة التي لا تتضمّن أدوات سطر الأوامر
cutأوexpr. - تم إصلاح مشكلة في مهمة
./gradlew lockClocksكانت تتوقف على الأجهزة التي تم الوصول إلى جذرها باستخدام إصدار قديم من أداة su، والذي لم يكن متوافقًا مع العلامة-c.
الإصدار 1.0.0-alpha04
7 آب (أغسطس) 2019
تم طرح ميزات androidx.benchmark:benchmark-common:1.0.0-alpha04 وandroidx.benchmark:benchmark-gradle-plugin:1.0.0-alpha04 وandroidx.benchmark:benchmark-junit4:1.0.0-alpha04. يمكنك الاطّلاع على التعديلات في هذا الإصدار هنا.
تمت أيضًا إضافة مستندات جديدة حول كيفية استخدام مكتبة Benchmark بدون Gradle، سواء للاستخدام مع أنظمة تصميم مختلفة (مثل Bazel أو Buck)، أو عند التشغيل في بيئة التكامل المستمر. لمزيد من المعلومات، اطّلِع على إنشاء مقاييس أداء بدون Gradle وتشغيل مقاييس الأداء في عملية الدمج المتواصل.
الميزات الجديدة
- المكوّن الإضافي لنظام Gradle
- يتم الآن إيقاف تغطية الاختبار تلقائيًا، ويتم ضبط
AndroidBenchmarkRunnerتلقائيًا (b/138374050) - تمت إضافة إمكانية نسخ البيانات الجديدة المستندة إلى Android Gradle Plugin عند تنفيذ اختبارات الأداء وعند استخدام الإصدار 3.6 من Android Gradle Plugin أو إصدار أحدث
- يتم الآن إيقاف تغطية الاختبار تلقائيًا، ويتم ضبط
- إضافات إلى تنسيق JSON
- إجمالي مدة تشغيل اختبار الأداء المعياري للناتج (b/133147694)
- إنّ مقاييس
@Parameterizedالتي تستخدم سلسلة اسم (مثل@Parameters(name = "size={0},depth={1}")) تعرض الآن أسماء المَعلمات وقيمها لكل مقياس في الناتج بتنسيق JSON (b/132578772)
- وضع التشغيل التجريبي (b/138785848)
- تمت إضافة وضع "التشغيل التجريبي" لتشغيل كل حلقة من حلقات قياس الأداء مرة واحدة فقط، وذلك للتحقّق من الأخطاء/الأعطال بدون تسجيل القياسات. يمكن أن يكون هذا مفيدًا، على سبيل المثال، لتشغيل مقاييس الأداء بسرعة في مرحلة ما قبل الإرسال للتحقّق من أنّها لا تتضمّن أخطاء.
تغييرات واجهة برمجة التطبيقات
- تم تغيير بنية الوحدة، ما أدّى إلى تقسيم المكتبة (b/138451391)
- يحتوي
benchmark:benchmark-junit4على فئات تعتمد على JUnit:AndroidBenchmarkRunnerوBenchmarkRule، وقد تم نقل كلتيهما إلى الحزمةandroidx.benchmark.junit4 - يحتوي
benchmark:benchmark-commonعلى بقية المنطق، بما في ذلك واجهة برمجة التطبيقات BenchmarkState - سيسمح هذا التقسيم للمكتبة بتوفير إمكانية قياس الأداء بدون واجهات برمجة تطبيقات JUnit4 في المستقبل.
- يحتوي
- يتم الآن التعامل مع تحذيرات الإعداد على أنّها أخطاء، وسيؤدي ذلك إلى تعطُّل الاختبار (b/137653596)
- ويتم ذلك لتشجيع إجراء قياسات دقيقة، خاصةً في CI
- يمكن تقليل هذه الأخطاء إلى تحذيرات باستخدام وسيط قياس. على سبيل المثال:
-e androidx.benchmark.suppressErrors "DEBUGGABLE,LOW_BATTERY"
إصلاح الأخطاء
- عند حدوث أخطاء أثناء الكتابة إلى وحدة التخزين الخارجية على أجهزة Q، يتم عرض رسائل أكثر تفصيلاً مع اقتراحات حول كيفية حلّ المشكلة
- يتم تشغيل الشاشات تلقائيًا أثناء عمليات قياس الأداء، بدلاً من حدوث خطأ عند إيقاف الشاشة
المساهمات الخارجية
- نشكر "سيرغي زاخاروف" على المساهمة في تحسين إخراج JSON وإصلاح المشاكل المتعلّقة بإيقاف الشاشة.
الإصدار 1.0.0-alpha03
2 تموز (يوليو) 2019
تم طرح androidx.benchmark:benchmark:1.0.0-alpha03 وandroidx.benchmark:benchmark-gradle-plugin:1.0.0-alpha03. يمكنك الاطّلاع على التعديلات في هذا الإصدار هنا.
الميزات الجديدة
- عرض مدة النوم بسبب الحدّ من سرعة المعالجة الحرارية لكل مقياس أداء في تقرير JSON الكامل
إصلاح الأخطاء
- لن يكون من الضروري تطبيق المكوّن الإضافي لنظام Gradle بعد المكوّنات الإضافية لنظام Android وكتلة Android
- إتاحة تقارير قياس الأداء على أجهزة Android 10 التي تستخدم مساحة التخزين المحصورة
الإصدار 1.0.0-alpha02
6 يونيو 2019
تم طرح androidx.benchmark:1.0.0-alpha02 وandroidx.benchmark:benchmark-gradle-plugin:1.0.0-alpha02. يمكنك الاطّلاع على التعديلات في هذا الإصدار هنا.
يُرجى العِلم أنّنا نتعامل مع مخطّط JSON على أنّه واجهة برمجة تطبيقات. ونخطّط لاتباع قيود الثبات نفسها التي تنطبق على واجهات برمجة التطبيقات الأخرى: أن تكون ثابتة (مع استثناءات نادرة جدًا) عند توفّرها في الإصدار التجريبي، وثابتة في الإصدار النهائي، مع إضافة ميزات فقط في الإصدارات الثانوية وإجراء تغييرات أو عمليات إزالة في الإصدارات الرئيسية.
تغييرات واجهة برمجة التطبيقات
تمت إعادة تصميم مخطّط JSON. من المحتمل أن تقتصر التغييرات الإضافية على مخطّط JSON على عمليات الإضافة:
- تمت إعادة تنظيم بنية عنصر النتيجة لتوفير مجموعات مقاييس إضافية في المستقبل (b/132713021)
- تمت إضافة معلومات سياقية خاصة بالتجربة، مثل معلومات الجهاز والإصدار وما إذا كانت الساعات مضبوطة، إلى العنصر ذي المستوى الأعلى (b/132711920)
- تتضمّن أسماء مقاييس الوقت الآن اللاحقة "ns" (b/132714527)
- تمت إضافة إحصاءات إضافية لكل مقياس تم تسجيله (الحد الأقصى والمتوسط والحد الأدنى)، وتمت إزالة الإحصاءات الموجزة المبسّطة الخاصة بـ "النانو" (b/132713851).
تمت إزالة إخراج XML (b/132714414)
إزالة ميزة رصد الحدّ الأقصى للتردد الحراري من واجهة برمجة التطبيقات
BenchmarkState.reportData(b/132887006)
إصلاح الأخطاء
- تم إصلاح مشكلة عدم ثبات
./gradlew lockClocksعلى بعض الأجهزة التي تعمل بأحدث إصدارات نظام التشغيل (b/133424037) - تم إيقاف رصد التقييد للمحاكي (b/132880807)
الإصدار 1.0.0-alpha01
7 أيار (مايو) 2019
تم طرح androidx.benchmark:benchmark:1.0.0-alpha01. يمكنك الاطّلاع على التعديلات في هذا الإصدار هنا.