مقياس الأداء
androidx.benchmark
androidx.benchmark.junit4
androidx.benchmark.macro
androidx.benchmark.macro.junit4
آخر تعديل | الإصدار الثابت | إصدار محتمل | الإصدار التجريبي | الإصدار التجريبي الأول |
---|---|---|---|---|
13 تشرين الثاني (نوفمبر) 2024 | 1.3.3 | - | - | 1.4.0-alpha05 |
الإعلان عن التبعيات
لإضافة تبعية على Benchmark، عليك إضافة مستودع Google Maven إلى مشروعك. يمكنك الاطّلاع على مستودع Maven من Google للحصول على مزيد من المعلومات.
Macrobenchmark
لاستخدام Macrobenchmark
في مشروعك، أضِف التبعيات التالية إلى ملف build.gradle
لملف
وحدة macrobenchmark:
Groovy
dependencies { androidTestImplementation "androidx.benchmark:benchmark-macro-junit4:1.3.0" }
Kotlin
dependencies { androidTestImplementation("androidx.benchmark:benchmark-macro-junit4:1.3.0") }
اختبار الأداء على مستوى الميكرو
لاستخدام Microbenchmark
في مشروعك، أضِف التبعيات التالية إلى ملف build.gradle
لملف
وحدة قياس الأداء الصغير:
Groovy
dependencies { androidTestImplementation "androidx.benchmark:benchmark-junit4:1.3.0" } android { ... defaultConfig { ... testInstrumentationRunner "androidx.benchmark.junit4.AndroidBenchmarkRunner" } }
Kotlin
dependencies { androidTestImplementation("androidx.benchmark:benchmark-junit4:1.3.0") } android { ... defaultConfig { ... testInstrumentationRunner = "androidx.benchmark.junit4.AndroidBenchmarkRunner" } }
كما توفر مكتبة المعايير الصغيرة مكونًا إضافيًا من مكونات Gradle التي يمكنك استخدامها مع وحدة المعايير الدقيقة.
يعين هذا المكون الإضافي الإعدادات الافتراضية لتهيئة التصميم للوحدة النمطية، وينشئ
نسخة قياس الأداء إلى المضيف،
وتوفر
./gradlew lockClocks
مهمة.
لاستخدام المكوّن الإضافي، يُرجى تضمين السطر التالي في كتلة "المكوّنات الإضافية" في المستوى الأعلى.
ملف build.gradle
:
Groovy
plugins { id 'androidx.benchmark' version '1.3.0' apply false }
Kotlin
plugins { id("androidx.benchmark") version "1.3.0" apply false }
طبِّق المكوِّن الإضافي على ملف build.gradle
الخاص بوحدة قياس الأداء.
Groovy
plugins { id 'androidx.benchmark' }
Kotlin
plugins { id("androidx.benchmark") }
ملاحظات
تساعدنا ملاحظاتك في تحسين Jetpack. يُرجى إعلامنا إذا واجهت مشاكل جديدة أو كان لديك أفكار لتحسين هذه المكتبة. يُرجى الاطّلاع على المشاكل الحالية في هذه المكتبة قبل إنشاء مكتبة جديدة. يمكنك إضافة صوتك إلى مشكلة حالية عن طريق النقر على زر النجمة.
اطّلِع على مستندات أداة تتبُّع المشاكل لمزيد من المعلومات.
الإصدار 1.4
الإصدار 1.4.0-alpha05
13 تشرين الثاني (نوفمبر) 2024
تم إصدار androidx.benchmark:benchmark-*:1.4.0-alpha05
. يتضمّن الإصدار 1.4.0-alpha05 عمليات الربط هذه.
إصلاح الأخطاء
- تم إصلاح مشكلة في الإصدار 34 من واجهة برمجة التطبيقات والإصدارات الأحدث، حيث كان
CompilationMode.None()
يحقّق أداءً غير متّسق لا يمثّل الأداء الأوّلي في أسوأ الحالات. ويؤدي ذلك إلى حلّ مشكلة تغيير في النظام الأساسي يسمح لحالة الترجمة في ARTverify
بتجميع التطبيقات جزئيًا (لا يؤثر ذلك إلا في تحميل الفئات) بعد فترة قصيرة من التشغيل الأول. (Ie48d0) - تم إصلاح مشكلة تعذّر فيها تسجيل عمليات التتبّع (خاصةً القصيرة) التي لا تسجّل قياسًا من مقاييس Macrobenchmark المضمّنة، وذلك بسبب اقتطاع اسم العملية ضمن عملية تتبُّع Perfetto. يعالج مقياس الأداء على مستوى التطبيق هذه المشكلة الآن من خلال البحث عن اسم الحزمة المقتطع في جميع طلبات البحث المضمّنة، بالإضافة إلى اسم الحزمة المتوقّع. يُرجى العلم أنّ عمليات تنفيذ
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 على عمليات الربط هذه.
تغييرات واجهة برمجة التطبيقات
- مقاييس الأداء على مستوى النظام: تضيف
ArtMetric
، والتي يمكن استخدامها لفحص تغطية الملف الشخصي أو الأداء العام لـ Android RunTime. يتم تسجيل عدد عمليات الربط الديناميكي للوقت وإجمالي مدّتها وعمليات بدء الصف (حيثما كان ذلك متاحًا) والتأكّد من الصف. بالإضافة إلى ذلك، تم تغييرCaptureInfo
لتضمين إصدار ART الرئيسي الاختياري مع الإصدار التلقائي. (I930f7) - أضِف
coefficientOfVariation
إلى إخراج Benchmark 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
و-Xtype-enhancement-improvements-strict-mode
(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) - من الاختبار القياسي
1.3.2
: تم إصلاح مشكلة تعذُّر "مركز الاختبار الافتراضي من Firebase" (FTL) في سحب ملفات نتائج "الملف الشخصي الأساسي" أو "الاختبارات المقياسية الكبرى" من "مكوّن Gradle الإضافي للملف الشخصي الأساسي". (I2f678، b/285187547)
لاستخدام FTL، طبِّق المكوّن الإضافي على وحدة الملف الشخصي الأساسي في قالب المكوّن الإضافي، مع:
plugins {
...
id("com.google.firebase.testlab")
}
بعد ذلك، عليك ضبط إعدادات "مركز الاختبار الافتراضي لمنصة Firebase" باستخدام ما يلي:
firebaseTestLab {
// Credentials for FTL service
serviceAccountCredentials.set(file("credentials.json"))
// Creates one or more managed devices to run the tests on.
managedDevices {
"ftlDeviceShiba34" {
device = "shiba"
apiLevel = 34
}
}
// Ensures the baseline profile is pulled from the device.
// Note that this will be automated as well later with aosp/3272935.
testOptions {
results {
directoriesToPull.addAll("/storage/emulated/0/Android/media/${android.namespace}")
}
}
}
يجب أيضًا إضافة جهاز FTL الذي تم إنشاؤه إلى إضافة الملف الشخصي الأساسي:
baselineProfile {
managedDevices += "ftlDeviceShiba34"
useConnectedDevices = false
}
الإصدار 1.4.0-alpha01
18 أيلول (سبتمبر) 2024
تم إصدار androidx.benchmark:benchmark-*:1.4.0-alpha01
. يحتوي الإصدار 1.4.0-alpha01 على عمليات الربط هذه.
ميزة جديدة: إحصاءات حول بدء تشغيل التطبيقات
- يمكن تفعيل الإصدار الأولي من إحصاءات بدء تشغيل التطبيق في أداة 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(...)
}
}
بعد ذلك، سيؤدي تشغيل مقياس أداء بدء التشغيل إلى تحليل التتبّع بحثًا عن المشاكل الشائعة، ثم طباعتها بعد المقاييس في مخرجات اختبار "استوديو YouTube" في علامة التبويب "مقياس الأداء"، على سبيل المثال:
StartupBenchmark_startup[startup=COLD,compilationMode=None]
├── Metrics
│ ├── timeToFullDisplayMs min 1,147.2, median 1,208.8, max 1,307.4
│ └── timeToInitialDisplayMs min 1,147.2, median 1,208.8, max 1,307.4
├── App Startup Insights
│ ├── App in debuggable mode (expected: false)
│ │ └── seen in iterations: 0(true) 1(true) 2(true) 3(true) 4(true) 5(true) 6(true) 7(true) 8(true) 9(true)
│ ├── Potential CPU contention with another process (expected: < 100000000ns)
│ │ └── seen in iterations: 4(105022546ns)
│ └── Main Thread - Binder transactions blocked (expected: false)
│ └── seen in iterations: 7(true)
└── Traces
└── Iteration 0 1 2 3 4 5 6 7 8 9
لا تزال هذه الميزة قيد التطوير، وسيتم إجراء تحسينات على المستندات وإمكانية التوسيع في المستقبل، ولكن يُرجى إرسال ملاحظاتك.
الميزات الجديدة
- تمت إضافة سمة gradle
androidx.baselineprofile.suppressWarnings
لإيقاف جميع التحذيرات المتعلّقة بالملف الشخصي الأساسي. (314153a) - يتم الآن عرض مقاييس Microbench في عمليات تتبُّع Perfetto كمعدّلات. (3214854)
- إضافة نصوص برمجية تجريبية لإيقاف ميزة JIT (يتطلب ذلك امتلاك إذن الوصول إلى الجذر أو إعادة تشغيل وقت التشغيل) وإعادة ضبط حالة أداء الجهاز أو الاختبار لا يتم حاليًا نشر هذه المهام كمهام gradle. (7c3732b)
- تمت إضافة مَعلمة قياس الأداء لتخطّي الاختبارات عند التشغيل على المحاكي. عند تفعيل الإصدار
automaticGenerationDuring
، ستؤدي معايير الأداء أيضًا إلى إنشاء ملف تعريف أساسي. لن تنجح هذه العملية في حال استخدام المحاكيات. باستخدام الوسيطة الجديدةskipBenchmarksOnEmulator
، يمكننا تخطّي الاختبار بدلاً من ذلك. (0c2ddcd) - تغيير منطق تفعيل حدث الأداء لتشغيله على الإصدار 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
، لن يتم تقليل وقتNs بشكل كبير عند حدوث الإيقاف المؤقت أو الاستئناف. (5de0968)
الإصدار 1.3
الإصدار 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 عمليات الربط هذه.
إصلاح الأخطاء
- تم إصلاح مشكلة تعذُّر سحب ملفات نتائج "ملف الأداء الأساسي" أو "اختبارات الأداء على مستوى التطبيق" من "مكوّن Gradle الإضافي لملف الأداء الأساسي" في "مركز الاختبار الافتراضي لمنصة Firebase". (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 عمليات الربط هذه.
إصلاح الأخطاء
- تمت إضافة سمة gradle
androidx.baselineprofile.suppressWarnings
لإيقاف جميع التحذيرات المتعلّقة بالملف الشخصي الأساسي (I7c36e، b/349646646) - تم إصلاح مكوّن Gradle الإضافي لملف الإصدار الأساسي لاستخدام
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 على عمليات الربط هذه.
التغييرات في اختبارات الأداء الدقيقة منذ الإصدار 1.2.0
- يكون تتبُّع الأساليب مفعّلاً تلقائيًا في اختبارات الأداء الدقيقة عند تشغيلها على معظم الأجهزة
- يتمّ تشغيل تتبُّع الطريقة كخطوة منفصلة بعد عمليات القياس، ما يتيح عرض قياسات دقيقة وتتبُّعات طرق من خلال عملية واحدة لتشغيل مقياس الأداء.
- سيؤثّر تتبُّع الطريقة في بعض إصدارات نظام التشغيل Android وART في مراحل القياس اللاحقة. في هذه الإصدارات، يكون تتبُّع الطريقة غير مفعّل تلقائيًا ويتم طباعة تحذير في مخرجات "استوديو Android".
- مقاييس الأداء لسلسلة التعليمات الرئيسية وأخطاء ANR
- تمت إضافة
measureRepeatedOnMainThread
لمقاييس أداء سلسلة مهام واجهة المستخدم (مثل تلك التي تتفاعل مع واجهات مستخدم Compose/View) لتجنُّب أخطاء ANR عند التشغيل لعدة ثوانٍ. - يتم تخطي عمليات تتبُّع الطريقة إذا كان من المتوقّع أن تتجاوز الموعد النهائي لتجنُّب أخطاء ANR. اضبط
androidx.benchmark.profiling.skipWhenDurationRisksAnr
على خطأ لإيقاف هذا السلوك (لا يُنصح به لإجراء عمليات دمج مستمر، لأنّ أخطاء ANR يمكن أن تتسبب في حدوث مشكلة في عمليات الدمج المستمر الطويلة).
- تمت إضافة
- تصغير حجم الملفات
- قواعد Proguard المضمّنة لتحسين اختبارات الأداء الدقيقة مع تفعيل التصغير
- يتطلب تصغير/R8 في وحدة مكتبة استخدام AGP 8.3، ويمكن تفعيله من خلال
android.buildTypes.release.androidTest.enableMinification
فيbuild.gradle
- تمت إضافة واجهة برمجة التطبيقات التجريبية
BlackHole.consume()
لمنع إزالة الرموز غير الصالحة (If6812، b/286091643)
- المقاييس
- ميزة احتساب أحداث وحدة المعالجة المركزية التجريبية (مقاييس من
perf_event_open
، والتي تتطلّب إذن الوصول إلى الجذر في معظم إصدارات النظام الأساسي)، والوصول إليها من خلالInstrumentationArgument
androidx.benchmark.cpuEventCounter.enable
(يمكن ضبطه علىtrue
)، وandroidx.benchmark.cpuEventCounter.events
يمكن ضبطه مثلاً على (Instructions,CpuCycles
). من المفترض أن تكون هذه الميزة متاحة على بعض المحاكيات التي تعمل بوضع userdebug، ولكن لم يتم اختبار مدى توفّرها على جميع المحاكيات المتاحة.
- ميزة احتساب أحداث وحدة المعالجة المركزية التجريبية (مقاييس من
تغييرات MACRObenchmark منذ الإصدار 1.2.0
- إعادة هيكلة تتبُّع الطريقة لمعايير الأداء الشاملة
- يتم الآن حصر عمليات تتبُّع الطريقة بمدة
measureBlock
، ويمكنها تسجيل جلسات متعددة إذا بدأت العملية عدة مرات. - في السابق، كان تتبُّع الطريقة يعمل فقط مع معايير
StartupMode.COLD
، ولم يكن يُسجِّل أي بيانات عنmeasureBlocks
التي لم تُعيد تشغيل العملية المستهدَفة. - تم إصلاح مشكلة تفريغ عمليات تتبُّع الطرق في اختبار الأداء على مستوى التطبيق، بحيث يتم تسجيل عمليات تتبُّع الطرق بالكامل وتكون صالحة، حتى على الأجهزة البطيئة. (I6349a، b/329904950)
- يتم الآن حصر عمليات تتبُّع الطريقة بمدة
- تفريغ ملف تعريف ART بشكل صحيح أثناء عمليات تكرار
warmUp
الفردية عند إنهاء العملية لتكون قياساتCompilationMode.Partial(warmup=N)
أكثر دقة (I17923) - رسالة تعذُّر بث Drop Shader
- تمت إضافة اقتراحات لتصحيح الأخطاء في رسالة تعذُّر بث برنامج تشويش الصورة.
- أضِف مَعلمتَي أدوات قياس الأداء لإلغاء سلوك إسقاط شادر لحلّ المشاكل المتعلّقة بالأعطال عند قياس أداء التطبيقات التي لا تتضمّن
ProfileInstaller
1.3:-
androidx.benchmark.dropShaders.enable=true/false
: يمكن استخدامه لتخطّي جميع عمليات إسقاط ملفات shaders (بما في ذلك تلك التي يتم إجراؤها في عمليات إطلاقStartupMode.Cold
)، خاصةً عند قياس أداء التطبيقات التي لا تستخدم أداة ProfileInstaller 1.3 بعد. -
androidx.benchmark.dropShaders.throwOnFailure=true/false
: يمكن استخدامها للتسامح مع حالات الفشل عند محاولة إسقاط ملفات shaders، على سبيل المثال عند قياس أداء التطبيقات بدون استخدام أداة ProfileInstaller 1.3 (I4f573)
-
- تمت إضافة خيار
MacrobenchmarkRule#measureRepeated
تجريبي يستخدِمPerfettoConfig
مخصّصًا لتسجيل عمليات تتبُّع Perfetto المخصّصة بالكامل. يُرجى العِلم أنّ الإعدادات التي تم ضبطها بشكل غير صحيح قد تؤدي إلى تعذُّر استخدام فئات المقاييس المضمّنة. (Idfd3d، b/309841164، b/304038384) - يمكنك إلغاء مهام dexopt في الخلفية قبل تشغيل اختبار Macrobenchmark للحد من التداخل. (I989ed)
- ينتظر تطبيق Macrobenchmark الآن لمدة ثانية واحدة حتى يُفرِغ التطبيق المستهدَف ملف تعريف ART (كان ينتظر في السابق لمدة 500 ملي ثانية). (I85a50، b/316082056)
- إعادة هيكلة TraceSectionMetric
- ملاحظة:
TraceSectionMetric
يمكن أن تؤثّر التغييرات أدناه في النتائج عند استخدام عملية التكامل المستمر، وقد تؤدي إلى حدوث انقطاعات أو إيقاف التحليل. - أصبح "المجموع" الإعداد التلقائي الآن، لأنّ معظم استخدامات هذا المقياس تكون للأحداث المتكرّرة، وسيؤدي ذلك إلى تجاهل البيانات في هذه الحالات.
- تم تغييره ليصبح أكثر تخصيصًا، مع توفير المزيد من الأوضاع
- تمّت الآن تضمين أسماء الأوضاع في اسم إخراج المقياس (في Studio وJSON).
- تتيح الآن شرائح تم إنشاؤها باستخدام
Trace.{begin|end}AsyncSection
.
- ملاحظة:
- المقاييس
- الطاقة: تمت إضافة
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
- تم رفع الحد الأقصى للإصدار المقترَح من AGP إلى 9.0.0-alpha01.
- تأكَّد من أنّ مهام
mergeArtProfile
وmergeStartupProfile
تنتظر دائمًا إنشاء الملف الشخصي الأساسي. (I623d6، b/343086054) - سيؤدي إنشاء ملف تعريف أساسي بنجاح إلى عرض ملخّص للتغييرات التي تم إجراؤها (I824c8، b/269484510).
- تمت إضافة DSL لإيقاف التحذيرات (Ic4deb، b/331237001)
- حلّ مشكلة عدم استخدام معايير الأداء للملفات الشخصية الأساسية التي تم إنشاؤها عندما يكون الخيار
automaticGenerationDuringBuild
غير مفعّل (Ic144f، b/333024280) - يجب إصلاح عمليات إلغاء سمات "مكوّن إضافي لـ Gradle" في
BaselineProfile
لتفعيل إنشاء الملف الشخصي الأساسي وإجراء قياس الأداء عند تخصيص نوع الإصدارnonMinified
أو قياس الأداء. (Ib8f05، b/324837887) - تم إصلاح مشكلة تضمين الملفات الشخصية الأساسية للمكتبة في حزمة AAR قبل الإصدار AGP 8.3.0-alpha15. (I1d2af، b/313992099)
- تم إصلاح عنوان URL لملف الإصدار الأساسي وملف الإعدادات المبدئية في نهاية مهمة الإنشاء. (I802e5، b/313976958)
تغييرات مهمة أخرى منذ الإصدار 1.2.0
- تسجيل عمليات التتبّع
- تم تقليل خطأ EXITCODE 2 عند بدء تشغيل perfetto من خطأ إلى تحذير مسجَّل
- تفعيل تتبُّع AIDL تلقائيًا في معايير الأداء (يتطلب الإصدار 28 من حزمة تطوير البرامج (API)) (Ia0af2، b/341852305)
- تفعيل تتبُّع علامة "المسؤول عن النقل" تلقائيًا في مقاييس الأداء ويشمل ذلك، على سبيل المثال، نقاط تتبُّع قفل التنشيط. (Icfe44، b/286551983)
- تم زيادة مهلة بدء تسجيل عمليات التتبُّع لتجنُّب الأعطال عند بدء التتبُّع على الأجهزة البطيئة (I98841، b/329145808)
- تمت إضافة واجهات برمجة التطبيقات
PerfettoTraceProcessor.Session.queryMetrics
العامة التي تتضمّن صيغ JSON وtextproto وproto binary (غير مفكَّكة). تتيح لك هذه المقاييس طلب مقاييس مضمّنة في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.CODENAMEcontext.build.version.abbreviatedCodename
: يشير إلى الحرف الأول من الاسم الرمزي للإصدار التجريبي (بما في ذلك إصدارات الإصدار) (Ie5020)
-
- تمت إضافة قائمة
profilerOutput
إلى إخراج JSON لتسهيل استخدام الأدوات المتعلّقة بعمليات تتبُّع الأداء (مثل Perfetto، وتتبُّع الطرق) (I05ddd، b/332604449) - تمت إضافة تحذير عند استخدام أداة "تنسيق اختبارات Android" في وحدات قياس الأداء، لأنّ ذلك سيؤدي إلى استبدال ملفات 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
، لن يتم تقليل وقتNs بشكل كبير عند حدوث الإيقاف المؤقت أو الاستئناف. (I39c2e وb/286306579 وb/307445225) - تم تقليل احتمالية حدوث تحليل تسلسل استدعاء الدوال البرمجية الذي يتسبب في عدم بلوغ
measureRepeatedOnMainThread
الحدّ الأقصى لمدة مهلة سلسلة التعليمات الرئيسية من خلال نقل تحويل تحليل تسلسل استدعاء الدوال البرمجية من سلسلة التعليمات الرئيسية. (I487a8، b/342237318) - تمت إزالة التحديد اليدوي للوصول إلى واجهات برمجة تطبيقات المنصة الجديدة لأنّ ذلك يحدث تلقائيًا من خلال وضع نماذج لواجهات برمجة التطبيقات عند استخدام R8 مع AGP 7.3 أو إصدار أحدث (مثل R8 الإصدار 3.3) ولجميع الإصدارات عند استخدام AGP 8.1 أو إصدار أحدث (مثل D8 الإصدار 8.1). ننصح العملاء الذين لا يستخدمون AGP بالترقية إلى الإصدار 8.1 من D8 أو إصدار أحدث. يُرجى مراجعة هذه المقالة للاطّلاع على مزيد من التفاصيل. (I9496c، b/345472586)
- تمت إضافة عملية التحقّق من إصدار agp لإرسال اسم الحزمة كوسيطة instr. في الإصدارات الأقدم من AGP 8.4.0، لا يمكن إرسال اسم حزمة التطبيق المستهدَف إلى تطبيق القياس من خلال مَعلمات القياس. (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) - سيتم الآن طرح اختبار الأداء المجهري بشكل صحيح لمنع تداخل تتبُّع الطريقة مع القياسات. يحدث ذلك على أجهزة معيّنة عند فرض تفعيل تتبُّع الطريقة (من خلال وسيطات أداة القياس أو
MicrobenchmarkConfig
)، وفي حال محاولة إجراء قياس بعد تتبُّع طريقة. تعمل الأجهزة المتأثّرة بالإصدار 26 إلى 30 من واجهة برمجة التطبيقات أو إصدارات معيّنة من وحدة ART الرئيسية المتأثّرة بهذا التداخل، ويمكن رصدها أثناء التشغيل من خلالProfilerConfig.MethodTracing.affectsMeasurementOnThisDevice
. (Iafb92، b/303660864)
إصلاح الأخطاء
- تم رفع الحد الأقصى لإصدار agp إلى 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 dependency ليصبح
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 على عمليات الربط هذه.
إصلاح الأخطاء
- طرح استثناء أوضح عندما يعرض مقياس macrobench قيمًا صفرية لجميع التكرارات (Iab58f، b/314931695)
- تمّت إضافة قواعد حلول بديلة إلى قواعد Proguard في microbench، بما في ذلك التوافق مع قواعد المستمعين والتحذيرات أو الأخطاء الأخرى التي تم رصدها. (I14d8f، b/329126308، b/339085669)
- يتمّ تشغيل ميزة تتبُّع الإجراءات كمرحلة منفصلة أثناء إجراء اختبار قياس الأداء على مستوى التطبيق، ولم تعُد تؤثر في القياسات. (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)
- يمكنك تبسيط عملية تسجيل عمليات تتبُّع الطرق لاختبارات الأداء على مستوى التطبيق، وذلك من خلال حصر النطاق بمدة
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 binary (غير مفكَّكة) تتيح لك هذه المقاييس طلب المقاييس المضمّنة في TraceProcessor (I54d7f وb/304038382). - تمت إضافة
profilerOutput
إلى إخراج JSON لتسهيل استخدام الأدوات في تتبُّع عمليات التحليل (مثل perfetto وتتبُّع الأساليب). (I05ddd، b/332604449) - تمت إضافة علامة الطاقة إلى إعدادات Perfetto لقياس الأداء. ويشمل ذلك، على سبيل المثال، نقاط تتبُّع قفل التنشيط. (Icfe44، b/286551983)
- تمت إضافة الوسيطة inst
androidx.benchmark.profiling.skipWhenDurationRisksAnr
، ويمكن ضبطها على false لتجنُّب تخطّي عمليات تتبُّع الطريقة عندما قد تؤدي المدة المتوقّعة إلى حدوث خطأ ANR. وننصحك بشدة بتجنُّب ذلك في عمليات تشغيل التكامل المستمر. - تمت إضافة مَعلمة inst التجريبية
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" في
BaselineProfile
لتفعيل إنشاء الملف الشخصي الأساسي وإجراء قياس الأداء عند تخصيص نوع الإصدارnonMinified
أو قياس الأداء. (Ib8f05، b/324837887) - تم إصلاح مشكلة تفريغ عمليات تتبُّع الطرق في اختبار الأداء على مستوى التطبيق، بحيث يتم تسجيل عمليات تتبُّع الطرق بالكامل وتكون صالحة، حتى على الأجهزة البطيئة. (I6349a، b/329904950)
- فعِّل ميزة حظر البدء في سجلّ تتبُّع Perfetto للحدّ من خطر عدم توفّر البيانات في بداية التتبُّع. لا تتوفّر هذه الميزة إلا مع الإصدار 33 من واجهة برمجة التطبيقات والإصدارات الأحدث. (Ie6e41، b/310760059)
- تمت إضافة تحذير عند استخدام أداة "تنسيق اختبارات Android" في وحدات قياس الأداء، لأنّ ذلك سيؤدي إلى استبدال ملفات 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 في اختبار microbench من خلال قواعد Proguard المضمّنة يُرجى العلم أنّ هذا الإجراء تجريبي، ويتطلب استخدام AGP 8.3 لتصغير اختبارات وحدات المكتبة. استخدِم ما يلي لتفعيل تصغير/تحسين R8 في
build.gradle
وحدة قياس الأداء، ما سيؤدي إلى زيادة كبيرة في الأداء، استنادًا إلى حجم العمل. (I738a3، b/184378053)android { buildTypes.release.androidTest.enableMinification = true }
إصلاح الأخطاء
- إصلاح تحذير تتبُّع الطريقة ليكون في سطر منفصل عن إخراج microbench (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
حتى تتمكّن مقاييس الأداء لسلسلة المحادثات الرئيسية (مثل المقاييس التي تتعامل مع واجهة مستخدم "عرض" أو "إنشاء") من تجنُّب ظهور أخطاء ANR، خاصةً أثناء مجموعات الاختبار الكبيرة في عملية التطوير المتكامل (CI). (I5c86d) - تمت إضافة
FrameTimingGfxInfoMetric
، وهو تنفيذ بديل تجريبي لـFrameTimingMetric
مع قياسات تأتي مباشرةً من المنصة، بدلاً من استخراجها من عملية تتبُّع Perfetto. (I457cb، b/322232828) - إضافة إمكانية تفريغ ملف تعريف ART أثناء عمليات
warmUp
الفردية (I17923) - عدّة تغييرات على واجهة برمجة التطبيقات
TraceSectionMetric
:- إضافة
Mode.Min
،Mode.Max
- إضافة وسيطة التصنيف لإلغاء اسم القسم بصفته تصنيف المقياس
- تمت إضافة اسم الوضع إلى الإخراج لتوضيح معنى المقياس
- تم تغيير الإعداد التلقائي إلى sum، لأنّ معظم استخدامات هذا المقياس تكون للأحداث المتكرّرة عليك الانتباه إلى هذه التغييرات في استخدام مؤشرات الأداء الرئيسية، لأنّها قد تؤدي إلى حدوث انقطاعات أو إيقاف التحليل. (Ic1e82، b/301892382، b/301955938)
- إضافة
إصلاح الأخطاء
- تم تحسين رسالة الخطأ في المكوّن الإضافي gradle لملف الإصدار الأساسي عندما لا يتوفّر الجهاز المُدار المحدّد (Idea2b، b/313803289)
- إصلاح لتضمين الملفات الشخصية الأساسية للمكتبة في حِزم AAR قبل الإصدار AGP 8.3.0-alpha15 (I1d2af، b/313992099)
- تمّ إصلاح عنوان URL لملفّ القاعدة والملفّ الشخصي لبدء التشغيل في نهاية مهمة الإنشاء (I802e5، b/313976958)
- تم تعديل مهلات مصادر البيانات لمحاولة حلّ المشكلة
java.lang.IllegalStateException: Failed to stop [ProcessPid(processName=perfetto, pid=...)]
(I8dc7d، b/323601788) - أضِف مَعلمتَي أدوات قياس الأداء لإلغاء سلوك إسقاط شادر لحلّ المشاكل المتعلّقة بالأعطال عند قياس أداء التطبيقات التي لا تتضمّن
ProfileInstaller
1.3:-
androidx.benchmark.dropShaders.enable=true/false
: يمكن استخدامه لتخطّي جميع عمليات إسقاط ملفات shaders (بما في ذلك تلك التي يتم إجراؤها في عمليات إطلاقStartupMode.Cold
)، خاصةً عند قياس أداء التطبيقات التي لا تستخدم أداة ProfileInstaller 1.3 بعد. -
androidx.benchmark.dropShaders.throwOnFailure=true/false
: يمكن استخدامها للتسامح مع حالات الفشل عند محاولة إسقاط ملفات shaders، على سبيل المثال عند قياس أداء التطبيقات بدون استخدام أداة ProfileInstaller 1.3 (I4f573)
-
- تخطّي تتبُّع الطريقة في سلسلة مهام واجهة المستخدم عندما يكون من المتوقّع أن يستغرق ذلك وقتًا أطول من بضع ثوانٍ، وتتبُّع طريقة التنظيف عند طرح الأخطاء (I6e768)
- يتم طرحها عندما تكون أسماء الملفات أطول من 200 حرف لتجنُّب الأعطال غير الواضحة عند كتابة الملفات أو بعد معالجتها. (I4a5ab)
- إصلاح مشكلة تؤدي إلى إقران الإطارات غير المنتهية في بداية التتبُّع ونهايته معًا، ما يؤدي إلى تسجيلها بشكل غير صحيح كإطار واحد طويل جدًا (I39353، b/322232828)
- استخدِم
--skip verification
على الإصدار 30 من "واجهة برمجة التطبيقات" والإصدارات الأحدث عند إعادة تثبيت حزمة على الإصدار 30 إلى 33 من "واجهة برمجة التطبيقات" لمحو ملفات ART الشخصية على إصدارات المستخدمين. يساعد ذلك في تجاوز تحذيرات "Play للحماية" التي تؤدي إلى حدوث أعطال في بعض فئات الأجهزة. (Ic9e36) - استخدِم
am force-stop
لإغلاق التطبيقات التي لا تُعدّ تطبيقات نظام، مثل واجهة مستخدم النظام أو مشغّل التطبيقات. (I5e028) - ينتظر "اختبار الأداء على مستوى النظام" الآن
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 قيد التشغيل قبل التشغيل على البارد" بسبب عدم نجاح عملية إنهاء العملية بالكامل. (I5e028)
الإصدار 1.2.3
24 كانون الثاني (يناير) 2024
تم إصدار androidx.benchmark:benchmark-*:1.2.3
. يحتوي الإصدار 1.2.3 على عمليات الربط هذه.
إصلاح الأخطاء
- تمّت إزالة الاستثناء من المكوّن الإضافي لملف Baseline Profile Gradle عندما يكون إصدار AGP هو 8.3.0 أو إصدار أحدث.
- تم إصلاح مشكلة تضمين الملفات الشخصية الأساسية للمكتبة في حزمة AAR قبل الإصدار AGP 8.3.0-alpha15.
الإصدار 1.2.2
1 كانون الأول (ديسمبر) 2023
تم إصدار androidx.benchmark:benchmark-*:1.2.2
. يحتوي الإصدار 1.2.2 على عمليات الربط هذه.
الملفات الشخصية للمرجع
- ستعرض سجلات التنفيذ مسار ملف الإخراج الخاص بالملف الشخصي الأساسي على أنّه معرّف موارد منتظم (URI) لملف محلي (aosp/2843918 وaosp/2853665 وb/313976958).
الإصدار 1.2.1
15 تشرين الثاني (نوفمبر) 2023
تم إصدار androidx.benchmark:benchmark-*:1.2.1
. يحتوي الإصدار 1.2.1 على هذه المراجعات.
الميزات الجديدة
- رسالة خطأ محسّنة عندما يوقف المستخدم الأسعار الاختبارية (b/307478189)
- تمّت إضافة مواقع لتوفير إمكانية دمج عمليات التشغيل التجريبي في "إعلانات شبكة البحث" (b/309805233)، (b/309116324)
الإصدار 1.2.0
18 تشرين الأول (أكتوبر) 2023
تم إصدار androidx.benchmark:benchmark-*:1.2.0
. يحتوي الإصدار 1.2.0 على هذه المراجعات.
التغييرات المهمة منذ الإصدار 1.1.0
الملفات الشخصية للمرجع
- يعمل مكوّن Gradle الإضافي الجديد لملف القاعدة على أتمتة عملية تسجيل ملفات القاعدة الأساسية وتضمينها في سير عمل الاختبار والإنشاء.
BaselineProfileRule.collect
أصبحت الآن مستقرة، وهي إصدار مبسّط ومُحسَّن من واجهة برمجة التطبيقات التجريبية السابقةBaselineProfileRule.collectBaselineProfile
- ما عليك سوى تحديد
packageName
وزيادة عدد عمليات تنزيل تطبيقك.
- ما عليك سوى تحديد
- بالنسبة إلى المكتبات التي تنشئ الملفات الشخصية الأساسية، يمكنك الآن فلترة القواعد التي تم إنشاؤها إما في الرمز البرمجي (الوسيطة
BaselineProfileRule.collect
) أو بشكل أبسط في المكوّن الإضافي gradle. - الإصلاحات
- تم إصلاح عملية جمع الملف الشخصي الأساسي على الإصدار 14 من نظام التشغيل Android والإصدارات الأحدث (Id1392، b/277645214)
Macrobenchmark
- التحويل البرمجي
- تعيد أداة Macrobenchmark الآن بشكل صحيح ضبط حالة الترجمة بالكامل لكل عملية ترجمة، ويتطلّب ذلك إعادة تثبيت حزمة APK قبل Android 14، لذا ننصح بشدة بإجراء اختبارات الأداء على الإصدار 14 من Android والإصدارات الأحدث إذا كنت تريد الاحتفاظ بالحالة (مثل تسجيل دخول المستخدم) في ما يتم قياسه.
- يمكنك أيضًا تجنُّب ذلك من خلال التحكّم في تجميع التطبيق بشكل منفصل، وتخطّي عملية التجميع باستخدام
CompilationMode.Ignore()
أو مَعلمة أداة القياس.
وسيطات قياس حالة التطبيق
- إتاحة وسيطة أداة القياس
androidx.benchmark.dryRunMode.enable
(متوفّرة حاليًا في اختبار الأداء المجهري) لإجراء عمليات التحقّق بشكل أسرع (مثلاً عند إنشاء اختبار الأداء أو في مرحلة ما قبل الإرسال) - يتوفّر الدعم لتطبيقَي
androidx.benchmark.profiling.mode=StackSampling
وMethodTracing
. - تمت إضافة
androidx.benchmark.enabledRules
للسماح باختبارات قاعدة ملف الأداء الأساسي للفلترة أثناء التشغيل مقارنةً باختبارات قاعدة الأداء الإجمالي. - تمت إضافة الوسيطة
androidx.benchmark.perfettoSdkTracing.enable
لتفعيل التتبُّع باستخدام tracing-perfetto، مثل تتبُّع إعادة التركيب في "الإنشاء". يُرجى العِلم أنّه عند استخدامStartupMode.COLD
، سيتأثّر التوقيت بشكل كبير عند تحميل مكتبة التتبّع وتفعيلها أثناء بدء تشغيل التطبيق.
- إتاحة وسيطة أداة القياس
المتطلبات
- يتطلب تطبيق Macrobenchmark الآن استخدام الإصدار 1.3.0 من أداة
ProfileInstaller
أو إصدار أحدث في التطبيق المستهدَف، لتفعيل ميزة "التقاط الملف الشخصي" أو "إعادة ضبط الملف الشخصي" وميزة "محو ذاكرة التخزين المؤقت لبرنامج معالجة الرسومات".
- يتطلب تطبيق Macrobenchmark الآن استخدام الإصدار 1.3.0 من أداة
Metric APIs التجريبية الجديدة
- تمت إضافة
TraceSectionMetric
التجريبي، الذي يتيح استخراج توقيت بسيط من وحداتtrace("") {}
في تطبيقك، أو TraceMetric للاستفادة من إمكانات طلب البحث الكاملة في PerfettoTraceProcessor
. - تمت إضافة
PowerMetric
التجريبي لتسجيل معلومات استخدام الطاقة - تمت إضافة
MemoryCountersMetric
التجريبي لعدّ أخطاء الصفحة - تمت إضافة واجهة برمجة التطبيقات التجريبية
PerfettoTraceProcessor
، والتي تُستخدَم داخليًا لاستخراج المقاييس من عمليات تتبُّع النظام (المعروفة أيضًا باسم عمليات تتبُّع Perfetto)
- تمت إضافة
الإصلاحات
- تم إصلاح الأعطال عند تثبيت الملفات الشخصية أو استخراجها من تطبيق تم تثبيته من حِزم APK متعددة (مثل حِزمة التطبيق).
- تم إصلاح
FrameTimingMetric
تجاهل اللقطات التي تتضمّن أرقام تعريف لقطات غير متّسقة (بشكل عام، اللقطات أثناء التموجات في الإصدار 31 من واجهة برمجة التطبيقات والإصدارات الأحدث) (I747d2، b/279088460) - تم إصلاح أخطاء التحليل في عمليات التتبّع التي تزيد عن 64 ميغابايت (Ief831، b/269949822)
- توضيح الأخطاء التي تحدث عند عدم ضبط صورة نظام التشغيل للجهاز (خاصةً المحاكي) بشكل صحيح للتتبّع أو التجميع
- تخطّي التحقّق من مستوى شحن البطارية للأجهزة التي لا تحتوي على بطارية (الكاميرات المصغّرة والمكبّرة)
- تحسين إخراج الملفات، مع أخطاء أكثر وضوحًا للمجلدات الإخراجية غير الصالحة، وإعدادات تلقائية أكثر أمانًا
- تحسين ثبات
StartupMode.COLD
من خلال إزالة ذاكرة التخزين المؤقت للظلال باستمرار (يتم عرضها أيضًا من خلالMacrobenchmarkScope.dropShaderCache
) - تم إصلاح الإجراء الاحتياطي لميزة "وضع الاسترخاء" في
startActivityAndWait
.
الاختبارات الدقيقة
- الميزات
- تم نقل ميزة "التحليل التفصيلي" إلى مرحلة منفصلة، بعد المقاييس الأخرى، حتى تتمكّن من عرض توقيت دقيق ونتائج التحليل التفصيلي في عملية اختبار واحدة.
- واجهات برمجة التطبيقات التجريبية
- تمت إضافة واجهة برمجة تطبيقات
MicrobenchmarkConfig
تجريبية لتحديد المقاييس المخصّصة وضبط التتبّع وإعداد الملفات الشخصية. يمكن استخدامها لتسجيل عمليات تتبُّع الطريقة أو تسجيل نقاط التتبُّع (مع الانتباه إلى الوقت المستغرَق في التتبُّع). - تمت إضافة واجهات برمجة تطبيقات تجريبية للتحكّم في
BenchmarkState
بشكل منفصل عنBenchmarkRule
، بدون JUnit - تمت إضافة سجلّ
PerfettoTrace
تجريبي لتفعيل تسجيل عمليات تتبُّع Perfetto، مع إعدادات مخصّصة، منفصلة عن واجهات برمجة تطبيقات قياس الأداء.
- تمت إضافة واجهة برمجة تطبيقات
- الإصلاحات
- حلّ مشكلة عدم توفّر المسافات البادئة في نتائج اختبارات الأداء في Android Studio
- تم إصلاح مشكلة تعذُّر طباعة التحذيرات في مخرجات اختبارات الأداء في 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 على هذه المراجعات.
إصلاح الأخطاء
- إصلاح مخرجات ملف الأداء لمنع إيقاف
BaselineProfile
نسخ ملفات المكوّنات الإضافية تم إنشاء الملفات ونسخها من الجهاز، ولكن تمت إعادة تسميتها بحيث لا تظهر لمكوّن gradle الإضافي. (I8dbcc، b/303034735، b/296453339) - تم توضيح رسائل خطأ تحميل
tracing-perfetto
عند الحقن من وحدة اختبار الأداء على مستوى التطبيق إلى التطبيق المستهدَف.
الإصدار 1.2.0-rc01
20 أيلول (سبتمبر) 2023
تم إصدار androidx.benchmark:benchmark-*:1.2.0-rc01
. يحتوي الإصدار 1.2.0-rc01 على هذه المراجعات.
إصلاح الأخطاء
- يتم الآن طرح استثناء (مع تعليمات العلاج) عند تعذُّر بدء عملية تتبُّع حزمة 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 لملف الإصدار الأساسي استخدام الإصدار 8.3 من المكوّن الإضافي لنظام Gradle المتوافق مع Android. (aosp/2715214)
الإصدار 1.2.0-beta04
23 آب (أغسطس) 2023
تم إصدار androidx.benchmark:benchmark-*:1.2.0-beta04
. يحتوي الإصدار 1.2.0-beta04 على هذه المراجعات.
الميزات الجديدة
- يتيح المكوّن الإضافي Baseline Profiles Gradle الآن استخدام الإصدار 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)
- تمّت إزالة خطأ "لا يمكن إنشاء ملف شخصي" في اختبار الأداء على مستوى النظام على الإصدار 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)
إصلاح الأخطاء
- الإبلاغ عن خطأ في macrobench عند ضبط إعدادات نظام التشغيل بشكلٍ غير صحيح للتتبّع، كما تم إصلاحه مؤخرًا في المحاكيات ARM64 لـ API 26/28 (I0a328، b/282191686)
- تمت إضافة تفاصيل حول تعذُّر إعادة تجميع الترجمة والتفسير لاقتراح تحديث المحاكي، لأنّ بعض المحاكيات قد تم إصلاح هذه المشكلة مؤخرًا. (I8c815، b/282191686)
- اجعل
androidx.test.uiautomator:uiautomator:2.2.0
api
بدلاً من تبعية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)
إصلاح الأخطاء
- إتاحة اختبارات الأداء على مستوى التطبيق لنظام التشغيل
androidx.benchmark.profiling.mode = MethodTracing
(I7ad37، b/285912360) - تم نقل ميزة تحليل الأداء باستخدام مقاييس الأداء الدقيقة إلى مرحلة منفصلة، لذا يتم تنفيذها تسلسليًا بعد القياس بدلاً من استبداله. يتم أيضًا تضمين أقسام تتبُّع
MethodTracing
في عملية تتبُّع Perfetto التي تم تسجيلها، في حال توفّرها. (I9f657، b/285014599) - أضِف قياس عدد القيم إلى
TraceSectionMetric
باستخدامMode.Sum
. (Ic121a، b/264398606)
الإصدار 1.2.0-alpha15
7 حزيران (يونيو) 2023
تم إصدار androidx.benchmark:benchmark-*:1.2.0-alpha15
. يحتوي الإصدار 1.2.0-alpha15 على هذه المراجعات.
الميزات الجديدة
- تمت إضافة
MemoryUsageMetric
تجريبي لتتبُّع استخدام الذاكرة في تطبيق مستهدف. (I56453، b/133147125، b/281749311) - إتاحة إعدادات Perfetto المخصّصة بالكامل باستخدام
PerfettoTrace.record
(If9d75، b/280460183) - تمت إضافة خاصيّة لتخطّي إنشاء الملف الشخصي الأساسي. الاستخدام:
./gradlew assemble -Pandroidx.baselineprofile.skipgeneration
(I37fda، b/283447020)
تغييرات واجهة برمجة التطبيقات
- تنشئ واجهة برمجة التطبيقات
collectBaselineProfile
دائمًا ملفات أساسية ثابتة. تمّت إزالة واجهة برمجة التطبيقاتcollectStableBaselineProfile
ويجب استخدامcollectBaselineProfile
بدلاً منها. (I17262، b/281078707) - تم تغيير الوسيطة
filterPredicate
فيBaselineProfileRule
إلى قيمة غير صفرية، مع قيمة تلقائية مكافئة حتى يصبح سلوك الفلتر التلقائي أكثر وضوحًا في المستندات. (I3816e)
إصلاح الأخطاء
- يمكنك إيقاف
IsolationActivity
وميزة تتبُّع Perfetto فيdryRunMode
لتحسين الأداء بشكل كبير، لأنّ هذه الميزات كانت تستغرق معظم وقت التشغيل. (Ie4f7d) - إتاحة تحليل عيّنات تسلسل استدعاء الدوال البرمجية في اختبارات الأداء على مستوى التطبيق باستخدام مَعلمتَي اختبار الأدوات
androidx.benchmark.profiling.mode=StackSampling
وandroidx.benchmark.profiling.sampleFrequency
(I1d13b، b/282188489) - إصلاح الأعطال عند إسقاط ملفات تظليل على نظام التشغيل Android U (واجهة برمجة التطبيقات 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
عند التحقّق من توفّر إحصاءات الطاقة في مستويات واجهة برمجة التطبيقات القديمة (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) - تم إصلاح ترتيب مَعلمات adb pull في الملف الشخصي الأساسي في إخراج Studio (I958d1، b/261781624)
- يتم الآن التعرّف على Arm emulator api 33 بشكل صحيح على أنّه كذلك عند محاولة تشغيل اختبار أداء برمجي على مستوى النظام، وسيتم طباعة التحذير بشكل صحيح. (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) - تحسين رسالة خطأ أداة تثبيت الملف الشخصي التي يتم طباعتها عندما تكون أداة تثبيت الملف الشخصي قديمة جدًا يطلب منك هذا الإجراء الآن تحديث إصدار أداة تثبيت الملفات الشخصية (1.2.1) لقياس الملفات الشخصية الأساسية على المستوى 31 من واجهة برمجة التطبيقات إلى المستوى 33، بدلاً من إبلاغك بأنّه غير متوافق. (Ia517f، b/253519888)
- إصلاح العديد من حالات تعذُّر تنفيذ أوامر shell عند ظهور رسالة الخطأ Print needed API <=23، بما في ذلك تعذُّر إعداد ثنائيات perfetto capture وتعذُّر تسجيل عمليات التتبُّع (Ib6b87، b/258863685)
- ترتيب قواعد الملفات الشخصية التي تم إنشاؤها تلقائيًا لتقليل عدد التغييرات أثناء تغيُّرها بمرور الوقت (عند تسجيل قواعد الملفات الشخصية في أداة التحكّم في المصدر) (Ie2509)
- تم إصلاح الأعطال في الإصدارات غير المزوّدة بإذن الوصول إلى الجذر والإصدارات الأقدم من Android 13 (المستوى 33 لواجهة برمجة التطبيقات) التي تظهر فيها الرسالة
Expected no stderr from echo 3 > /proc/sys/vm/drop_caches
(I6c245، b/259508183).
المشاكل المعروفة
- قد يتعطل تطبيق MacrobenchmarkScope.dropShaderCache()
بسبب عدم توفّر سجلّ البث في بيان أداة تثبيت الملفات الشخصية، والذي لم يتم طرحه بعد. (I5c728، b/258619948) لحلّ المشكلة في profileinstaller:1.3.0-alpha02
، أضِف ما يلي إلى ملف AndroidManifest.xml الخاص بتطبيقك (وليس ملف قياس الأداء):
<!-- workaround bug in profileinstaller 1.3.0-alpha02, remove when updating to alpha03+ -->
<receiver
android:name="androidx.profileinstaller.ProfileInstallReceiver"
android:permission="android.permission.DUMP"
android:exported="true">
<intent-filter>
<action android:name="androidx.profileinstaller.action.BENCHMARK_OPERATION" />
</intent-filter>
</receiver>
الإصدار 1.2.0-alpha07
9 تشرين الثاني (نوفمبر) 2022
تم إصدار androidx.benchmark:benchmark-*:1.2.0-alpha07
. يحتوي الإصدار 1.2.0-alpha07 على هذه المراجعات.
تغييرات واجهة برمجة التطبيقات
- إضافة واجهة برمجة التطبيقات
PowerMetric
لقياس الطاقة في اختبارات الأداء الشاملة (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
، حتى يمكن نسخ الأمر pull بسهولة في حال ربط أجهزة متعددة (ما يصل إلى جهاز محاكاة واحد) I6ac6c، b/223359380) - إضافة خطأ إذا لم يتم إعداد حزمة apk لاختبار الأداء الإجمالي على أنّها أداة قياس أداء ذاتي يمنع هذا الخطأ إجراء قياس الأداء على مستوى النظام من داخل عملية التطبيق المستهدَف. أثناء العملية، لن يتمكّن macrobench من تجميع/إيقاف/بدء تشغيل التطبيق بدون أي ذاكرة تخزين مؤقت، أو التحكّم في أذوناته (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
تتطلّب إذن الوصول إلى الجذر على الإصدار 13 من نظام التشغيل Android (المستوى 33 لواجهة برمجة التطبيقات)، ولم تعُد تجريبية. (Ie0a7d وb/250083467 وb/253094958)- يصحّح هذا التغيير أيضًا طريقة تفريغ الملفات الشخصية من أحد التطبيقات على القرص على الأجهزة غير المزوّدة بإذن الوصول إلى الجذر، ولكنّه يتطلّب تحديث التبعية الخاصة بملف تثبيت الملفات الشخصية للتطبيق المستهدَف.
- لاستخدام
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 على هذه المراجعات.
إصلاح الأخطاء
- إصلاح مشكلة تقسيم اللقطات في أداة عرض عمليات تتبُّع النظام في "استوديو YouTube" للعمليات التي تم تسجيلها في اختبارات الأداء (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
في اختبارات الأداء على مستوى النظام (التي تتوفّر حاليًا في اختبارات الأداء على مستوى التطبيق) لتطوير التطبيقات بشكل أسرع على الجهاز، والتحقّق من صحة التشغيل الآلي للتطبيقات (مثلاً في مرحلة ما قبل الإرسال) يؤدي ذلك إلى إلغاء عمليات التكرار إلى 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)
- إتاحة التحقّق من مقاييس الطاقة في "إدارة الطاقة الذكية للأجهزة الجوّالة" على الأجهزة غير المزوّدة بإذن الوصول إلى الجذر (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 أو BaselineProfile لتشغيل نوع واحد فقط من الاختبارات، مثلاً عند إنشاءBaselineProfiles
على المحاكي فقط. يمكن أيضًا استخدام قائمة مفصولة بفواصل. (I756b7، b/230371561)على سبيل المثال، في ملف build.gradle الخاص باختبار الأداء على مستوى التطبيق:
android { defaultConfig { testInstrumentationRunnerArgument 'androidx.benchmark.enabledRules', 'BaselineProfile' } }
أو من سطر أوامر Gradle:
./gradlew macrobenchmark:cC -P android.testInstrumentationRunnerArguments.androidx.benchmark.enabledRules=BaselineProfile
تغييرات واجهة برمجة التطبيقات
- تمت إضافة
PowerMetric
جديدة لقياس مهام الطاقة والأداء في المقاييس. (I9f39b، b/220183779) - تمت إضافة وضع تجميع جديد
CompilationMode.Ignore
لتخطّي إعادة ضبط الملف الشخصي وتجميعه. (Ibbcf8، b/230453509) - تمت إضافة مَعلمة جديدة إلى
BaselineProfileRule#collectBaselineProfile
لفلترة ملف الإخراج حسب أسماء الحِزم (If7338 وb/220146561). - يتيح هذا الخيار للمطوّر تفريغ شحن الجهاز لقياس استهلاك الطاقة. (I6a6cb)
- تمت إضافة إمكانية محو ذاكرة التخزين المؤقت لظلال الألوان في
MacrobenchmarkScope
. (I32122) - يتيح للمطوّر ضبط عرض نوع المقياس وتفاصيل فئات الأنظمة الفرعية المطلوبة. (I810c9)
- في السابق، كان يتم طرح
UnsupportedOperationException
في الاختبار القياسي في حال تشغيله على جهاز غير متوافق. لا يحدث الآن خطأ UOE إلا إذا تم استخدام المقياس على الجهاز غير المتوافق (مثلPowerMetric.configure
). (I5cf20، b/227229375) - تمت إضافة
TotalPowerMetric
وTotalEnergyMetric
لقياس إجمالي الطاقة في كل فئة من فئات النظام في اختبارات الأداء الشاملة. (I3b26b، b/224557371)
إصلاح الأخطاء
- تم إصلاح مشكلة عدم إعادة ضبط الطرق المجمّعة بشكل صحيح بين كل اختبار قياس أداء برمجي على النطاق الكبير في الإصدارات غير المزوّدة بإذن الوصول إلى الجذر. يتطلّب ذلك إعادة تثبيت حزمة apk في كلّ تكرار، ما سيؤدي إلى محو بيانات التطبيق لكلّ اختبار أداء شامل. (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
التي قد تحدث على بعض أجهزة Android 11 (المستوى 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 قياس تفاعلات التطبيق بالكامل، مثل التشغيل والانتقال للأعلى أو للأسفل، كما يوفّر لك إمكانية تسجيل عمليات التتبّع وقياس أقسام التتبّع.
إتاحة الملفات الشخصية للمرجع
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)تحسين سرعة تكرار اختبارات الأداء على مستوى النظام من خلال تحسين أوامر Shell المستخدَمة في الخلفية (aosp/2086023، b/231323582)
إتاحة استخدام أجهزة Gradle المُدارة عند إنشاء الملفات الشخصية الأساسية باستخدام اختبارات الأداء على مستوى النظام (aosp/2062228، b/228926421)
الإصدار 1.1.0-rc02
11 أيار (مايو) 2022
تم إصدار androidx.benchmark:benchmark-*:1.1.0-rc02
. يحتوي الإصدار 1.1.0-rc02 على هذه المراجعات.
- يُرجى العلم أنّ هذا الإصدار يتضمّن تغييرًا في السلوك، حيث تتم إعادة تثبيت التطبيقات بالكامل الآن بين كل معيار لضمان قياسات دقيقة.
إصلاح الأخطاء/تغييرات في السلوك
تم إصلاح مشكلة عدم إعادة ضبط عملية تجميع التطبيق بشكل صحيح بين اختبارات الأداء الشاملة، وعدم إعادة ضبطها على الإطلاق في عمليات الإنشاء غير المزوّدة بإذن الوصول إلى الجذر. ويؤدي ذلك إلى حلّ العديد من الحالات التي يؤدي فيها إجراء اختبارات متعددة إلى عدم تأثير
CompilationMode
في القياسات أو تأثيرها بشكل بسيط. لحلّ هذه المشكلة، يعيد التطبيق المستهدَف الآن تثبيت كل طريقة اختبار بالكامل، ما سيؤدي إلى محو بيانات التطبيق بين كل اختبار قياس أداء شامل. (I31c74، b/230665435)وبما أنّ هذا الإجراء يمنع التطبيقات من إعداد الحالة قبل الاختبارات، أصبح من الممكن الآن تخطّي عملية الترجمة / إعادة التثبيت للتعامل مع هذه المشكلة. على سبيل المثال، يمكنك تجميع الهدف بالكامل باستخدام أمر shell
cmd package compile -f -m speed <package>
، ثم تخطّي خطوة التجميع في أداة قياس الأداء على مستوى النظام.على سبيل المثال، في ملف build.gradle الخاص باختبار الأداء على مستوى التطبيق:
android { defaultConfig { testInstrumentationRunnerArgument 'androidx.benchmark.compilation.enabled, 'false' } }
أو من سطر أوامر Gradle:
./gradlew macrobenchmark:cC -P android.testInstrumentationRunnerArguments.androidx.benchmark.compilation.enabled=false
أصبح من الممكن مشاركة وحدة بين اختبارات الأداء الشاملة واختبارات إنشاء الملف الشخصي الأساسي من خلال إضافة وسيطة أداة القياس
androidx.benchmark.enabledRules
. يمكنك إدخال Macrobenchmark أو BaselineProfile لتشغيل نوع واحد فقط من الاختبارات، مثلاً عند إنشاءBaselineProfiles
على جهاز محاكاة. (I756b7، b/230371561)على سبيل المثال، في ملف build.gradle الخاص باختبار الأداء على مستوى التطبيق:
android { defaultConfig { testInstrumentationRunnerArgument 'androidx.benchmark.enabledRules', 'BaselineProfile' } }
أو من سطر أوامر Gradle:
./gradlew macrobenchmark:cC -P android.testInstrumentationRunnerArguments.androidx.benchmark.enabledRules=BaselineProfile
الإصدار 1.1.0-rc01
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)
- يجب إصلاح مقاييس بدء التشغيل لاختبارات الأداء الشاملة عند استخدام
CompilationMode.None()
. قبل هذا التغيير، كان يبدو أنّCompilationMode.Partial()
أبطأ منCompilation.None()
. (611ac9).
الإصدار 1.1.0-beta05
23 آذار (مارس) 2022
تم إصدار androidx.benchmark:benchmark-*:1.1.0-beta05
. يحتوي الإصدار 1.1.0-beta05 على هذه المراجعات.
إصلاح الأخطاء
- إيقاف الحزمة بعد تخطّي تثبيت الملف الشخصي عند استخدام
CompilationMode.None
(aosp/1991373) - تم إصلاح مشكلة تعذُّر جمع مقاييس بدء التشغيل في اختبارات الأداء على مستوى النظام عند استخدام
StartupMode.COLD
. (aosp/2012227 b/218668335)
الإصدار 1.1.0-beta04
23 شباط (فبراير) 2022
تم إصدار androidx.benchmark:benchmark-*:1.1.0-beta04
. يحتوي الإصدار 1.1.0-beta04 على هذه المراجعات.
إصلاح الأخطاء
إصلاح عدم توفّر المقاييس على نظام التشغيل Android 10 و
NoSuchElementException
الناتج عن عدم تسجيل أسماء العمليات بشكلٍ صحيح في عمليات التتبّع (Ib4c17، b/218668335)استخدِم
PowerManager
لرصد الحدّ من الأداء بسبب الحرارة على الإصدار Q (واجهة برمجة التطبيقات 29) والإصدارات الأحدث. ويؤدي ذلك إلى تقليل معدّل الظهور المتكرّر للنتائج الخاطئة في عملية رصد الحدّ الأقصى للطاقة الحرارية (إعادة إجراء الاختبار بعد فترة انتظار تبلغ 90 ثانية)، ويسرع الاختبارات بشكل كبير على الإصدارات التي ينشئها المستخدمون. ويرصد هذا الإجراء أيضًا عمليات التباطؤ حتى عندما تكون الساعات مقفَلة (إذا كانت مقفلة على قيمة عالية جدًا مقارنةً بالبيئة المكانية للجهاز). (I9c027، b/217497678، b/131755853)فلترة التحليل المستند إلى عيّنات simpleperf إلى سلسلة مهام
measureRepeated
فقط لتبسيط عملية الفحص (Ic3e12، b/217501939)توفير مقاييس من العمليات الفرعية المُسمّاة لواجهة المستخدم في التطبيقات التي تستخدم عدّة عمليات (Ice6c0، b/215988434)
فلتِر قواعد الملف الشخصي الأساسي لاستهداف Android 9 (حزمة تطوير البرامج 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
إلى مكتبة اختبارات الأداء الشاملة ضمن علامة تجريبية للسماح برصد حالات تأخُّر تشغيل الصوت (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() // ... } ) }
إصلاح الأخطاء
- تم إصلاح مشكلة تعذُّر تعديل عمليات تتبُّع أداة تحليل الأداء في اختبارات الأداء الصغيرة في عمليات التشغيل اللاحقة عند ربطها في مخرجات "استوديو YouTube" (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 على هذه المراجعات.
إصلاح الأخطاء
- أصبحت نتائج ملف تعريف تحليل أداء وحدات البطاقة الصغيرة / تتبُّع طريقة القياس مرتبطة الآن في نتائج "استوديو تطوير البرامج"، تمامًا مثل نتائج ملفّات الأداء الأخرى، ولا يتم إخفاء قياس التوزيع. (Idcb65 وb/214440748 وb/214253245)
- تُطبع BaselineProfileRule الآن الأمر
adb pull
في logcat ومخرجات Studio لسحب ملف 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
إلى enum لتوضيح ذلك. (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 تقريبًا من خلال التبديل إلى تنسيق تخزين مخطّط مكثّف. (Id5fb6، b/199324831)
- تم تعديل عمليات تنفيذ مقاييس بدء التشغيل لتنتهي دائمًا عند نهاية renderthread. وسيكون ذلك أكثر اتساقًا على مستوى إصدارات منصّة الإعلانات، وسيرتبط بشكلٍ أوثق بالقياسات داخل التطبيق. (Ic6b55)
الإصدار 1.1.0-alpha11
3 تشرين الثاني (نوفمبر) 2021
تم إصدار androidx.benchmark:benchmark-*:1.1.0-alpha11
. يحتوي الإصدار 1.1.0-alpha11 على هذه المراجعات.
تغييرات واجهة برمجة التطبيقات
- أصبح
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/S والإصدارات الأحدث، ما سيزيد من دقة عمليات بدء 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)
- التبديل إلى مقاييس النقطة العائمة في جميع مكتبات قياس الأداء (يتم اقتطاعها في واجهة مستخدم "استوديو YouTube") (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
لتسهيل تشغيل اختبارات MacroBenchmarks باستخدام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 ثوانٍ تقريبًا، مقابل إيقاف استخدام intent parcelables. (I5a6f5، b/192009149
إصلاح الأخطاء
- يمكنك تقليل سرعة رصد عمليات الحدّ من السرعة بسبب الحرارة، و إعادة احتساب قاعدة البيانات الأساسية إذا تم رصد عمليات الحدّ من السرعة بشكل متكرر. (I7327b)
- إصلاحات في FrameTimingMetric لكي تعمل على الإصدار التجريبي من Android S (Ib60cc، b/193260119)
- استخدِم
EmptyActivity
لإخراج التطبيق المستهدَف من حالة الإيقاف القسري لدعمCompilationMode.BaselineProfile
بشكل أفضل. (Id7cac، b/192084204) - تم تغيير امتداد ملف التتبُّع إلى
.perfetto-trace
لمطابقة معيار المنصة. (I4c236، b/174663039) - يعرض مقياس StartupTimingMetric الآن مقياس "fullyDrawnMs" لقياس الوقت إلى أن يكتمل عرض تطبيقك. لتحديد هذا المقياس لتطبيقك، استخدِم Activity.reportFullyDrawn عندما يكون المحتوى الأولي جاهزًا، مثلما يحدث عند تحميل عناصر القائمة الأولية من قاعدة البيانات أو الشبكة. (تتوفّر طريقة reportFullyDrawn بدون عمليات التحقّق من إصدار الإصدار على ComponentActivity). يُرجى العلم أنّه يجب تنفيذ الاختبار لفترة كافية لتسجيل المقياس (لا تنتظر startActivityAndWait لإجراء reportFullyDrawn). (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 من Benchmark مكوّنًا كبيرًا لقياس الأداء، وهو Macrobenchmark. بالإضافة إلى أنّ مقاييس الأداء تسمح لك بقياس عمليات تكرار وحدة المعالجة المركزية، تتيح لك مقاييس الأداء الشاملة قياس التفاعلات في التطبيق بالكامل، مثل بدء التشغيل والانتقال للأعلى أو للأسفل، وتسجيل عمليات التتبّع. لمزيد من المعلومات، يُرجى الاطّلاع على مستندات المكتبة.
تم إصدار androidx.benchmark:benchmark-*:1.1.0-alpha02
. يحتوي الإصدار 1.1.0-alpha02 على هذه المراجعات.
الميزات الجديدة
تمّت إضافة عناصر اختبارات الأداء على مستوى النظام (androidx.benchmark:benchmark-macro-junit4
وandroidx.benchmark:benchmark-macro
).
- تسجيل مقاييس أداء بدء التشغيل أو الانتقال إلى الأسفل/الحركة من تطبيقك، محليًا أو في عملية التطوير المتكامل (CI)
- تسجيل عمليات التتبّع وفحصها من داخل Android Studio
إصلاح الأخطاء
- حلّ مشكلة أذونات shell في دليل الإخراج على Android 12 (ملاحظة: قد يتطلّب ذلك تحديث Android Gradle Plugin إلى الإصدار 7.0.0 canary وAndroid Studio إلى Arctic Fox (2020.3.1) لمواصلة التقاط ملفات الإخراج على الأجهزة المتأثرة). (Icb039)
- إتاحة التخزين المؤقت للإعدادات في BenchmarkPlugin (6be1c1، b/159804788)
- إخراج الملفات المبسّط: مفعَّل تلقائيًا في دليل لا يتطلّب
requestLegacyExternalStorage=true
(8b5a4d، b/172376362) - إصلاحات في المكتبة تؤدي إلى طباعة تحذيرات logcat بشأن عدم العثور على سلسلت JVM المبرمَجة (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"، بالإضافة إلى
- إتاحة ميزة "التحليل التفصيلي": يمكنك الآن تسجيل بيانات التحليل التفصيلي لإجراء اختبار أداء، وذلك لفحص سبب بطء تشغيل الرمز البرمجي. يتيح مقياس الأداء تسجيل تتبُّع الطريقة أو تحليل عيّنات الطريقة من ART. يمكن فحص هذه الملفات باستخدام أداة تحليل الأداء داخل "استوديو Android" باستخدام ملف > فتح.
- يقدّم المكوّن الإضافي Benchmark Gradle الآن إعدادات تلقائية لتسهيل عملية الإعداد:
- يتم ضبط
testBuildType
على الإصدار تلقائيًا لتجنُّب استخدام التبعيات التي تتضمّن تغطية الرمز البرمجي. يتم أيضًا ضبط buildType للإصدار على أنّه buildType التلقائي، ما يسمح لـ Android Studio باختيار الصيغة الصحيحة للإصدار تلقائيًا عند فتح مشروع للمرة الأولى. (b/138808399) - يتم استخدام
signingConfig.debug
كإعداد التوقيع التلقائي (b/153583269).
- يتم ضبط
** إصلاح الأخطاء **
- تمّ تقليل الوقت غير الضروري الذي يستغرقه الانتقال إلى وضع التشغيل العادي بشكلٍ كبير، حيث كان القياس الأول لكلّ مقياس أعلى بشكلٍ مصطنع من غيره. كانت هذه المشكلة أكثر وضوحًا في معايير الأداء الصغيرة جدًا (1 ميكرو ثانية أو أقل). (b/142058671)
- تم إصلاح خطأ
InstrumentationResultParser
الذي يتم طباعته لكلّ معيار أداء عند التشغيل من سطر الأوامر. (I64988، b/154248456)
المشاكل المعروفة
- لا تُطبع النتائج مباشرةً عند استخدام سطر الأوامر أو طلبات Gradle لـ Benchmark. يمكنك حلّ هذه المشكلة إما من خلال تشغيلها من خلال "استوديو YouTube" أو تحليل ملف JSON الناتج للحصول على النتائج.
- يتعذّر على ميزة "إعداد معايير الأداء" سحب التقرير من الأجهزة التي تم تثبيت تطبيق عليها باستخدام معرّف تطبيق ينتهي بـ "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 Studio أو في عملية الدمج المستمر لمراقبة أداء الرمز البرمجي بمرور الوقت ومنع حدوث تراجعات.
تشمل الميزات الرئيسية ما يلي:
- تثبيت الساعة
- تحديد أولوية سلسلة المحادثات تلقائيًا
- إتاحة اختبار أداء واجهة المستخدم، مثل نموذج 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 في المكوّن الإضافي لنظام Gradle المتوافق مع Android 3.5 و3.6
الإصدار 1.0.0-beta01
9 تشرين الأول (أكتوبر) 2019
تم إصدار androidx.benchmark:benchmark-common:1.0.0-beta01
وandroidx.benchmark:benchmark-gradle-plugin:1.0.0-beta01
و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 من "مكوّن Android Gradle" لمعرفة الحالات التي سيتولى فيها "مكوّن Android Gradle" نسخ البيانات. - إصلاح عدم رصد معدّل تكرار الساعة في ملف 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 على هذه المراجعات.
الميزات الجديدة
- تمت إضافة عملية تحقّق من استخدام الحزمة القديمة لبرنامج تشغيل الاختبار بشكل غير صحيح، ما يؤدي الآن إلى عرض رسالة خطأ أكثر فائدة.
تغييرات واجهة برمجة التطبيقات
- أصبح التعليق التوضيحي التجريبي
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) وعند تشغيلها في عملية التطوير المتكامل (CI). لمزيد من المعلومات، اطّلِع على مقالتَي إنشاء مقاييس الأداء بدون Gradle وتشغيل مقاييس الأداء في عملية الدمج المستمر.
الميزات الجديدة
- مكوّن Gradle الإضافي
- يتم الآن إيقاف تغطية الاختبار تلقائيًا وضبط
AndroidBenchmarkRunner
تلقائيًا (b/138374050). - تمت إضافة ميزة تتيح نسخ البيانات الجديدة المستندة إلى AGP عند تنفيذ معايير الأداء وعند استخدام الإصدار 3.6 من AGP والإصدارات الأحدث.
- يتم الآن إيقاف تغطية الاختبار تلقائيًا وضبط
- إضافات تنسيق 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 API. - سيسمح هذا التقسيم للمكتبة بتوفير ميزة قياس الأداء بدون واجهات برمجة تطبيقات JUnit4 في المستقبل.
- تحتوي حزمة
- يتم الآن التعامل مع تحذيرات الإعدادات على أنّها أخطاء، وستؤدي إلى تعطُّل الاختبار (b/137653596).
- ويتم ذلك لزيادة التشجيع على إجراء قياسات دقيقة، خاصةً في عملية التطوير المتكامل.
- يمكن تقليل هذه الأخطاء إلى تحذيرات باستخدام مَعلمة أداة القياس. على سبيل المثال:
-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
. تتوفّر عمليات الربط المضمّنة
في هذا الإصدار
هنا.