مقياس الأداء

قياس أداء الرمز البرمجي بدقة في "استوديو Android"
آخر تعديل الإصدار الثابت إصدار محتمل الإصدار التجريبي الإصدار التجريبي الأول
11 كانون الأول (ديسمبر) 2024 1.3.3 - - 1.4.0-alpha06

الإعلان عن التبعيات

لإضافة تبعية على 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-alpha06

11 كانون الأول (ديسمبر) 2024

تم إصدار androidx.benchmark:benchmark-*:1.4.0-alpha06. يتضمّن الإصدار 1.4.0-alpha06 عمليات الربط هذه.

تغييرات واجهة برمجة التطبيقات

  • تمّ إيقاف استخدام @Language("sql") في PerfettoTraceProcessor.Session.query() لأنّ ميزة التمييز أو التحليل في "استوديو YouTube" لا تعمل بشكل صحيح. (Idc2fa، b/377733398)

إصلاح الأخطاء

  • تستخدم هذه المكتبة الآن تعليقات توضيحية حول عدم تحديد قيمة JSpecify، وهي عبارة عن استخدام للنوع. على مطوّري لغة Kotlin استخدام مَعلمات المُجمِّع التالية لفرض الاستخدام الصحيح: -Xjspecify-annotations=strict و-Xtype-enhancement-improvements-strict-mode (I46810 وb/326456246)
  • تم تصحيح ArtMetric للإبلاغ عن تحميل الفئة (وليس الإعداد)، وتحسين المستندات لتوضيح سلوك وقت التشغيل. (I9915c)
  • في ميزة "تعدد المستخدمين" في Android، نفِّذ الأوامر بصفتك مشرفًا على الأجهزة المزوّدة بإذن الوصول إلى الجذر فقط. (I88b44)

الإصدار 1.4.0-alpha05

13 تشرين الثاني (نوفمبر) 2024

تم إصدار androidx.benchmark:benchmark-*:1.4.0-alpha05. يتضمّن الإصدار 1.4.0-alpha05 عمليات الربط هذه.

إصلاح الأخطاء

  • تم إصلاح مشكلة في الإصدار 34 من واجهة برمجة التطبيقات والإصدارات الأحدث، حيث كان CompilationMode.None() يحقّق أداءً غير متّسق لا يمثّل الأداء الأوّلي في أسوأ الحالات. ويؤدي ذلك إلى حلّ مشكلة تغيير في النظام الأساسي يسمح لحالة الترجمة في ART verify بتجميع التطبيقات جزئيًا (لا يؤثر ذلك إلا في تحميل الفئات) بعد فترة قصيرة من التشغيل الأول. (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 من واجهة برمجة التطبيقات، ما يؤثر في context.compilationMode بتنسيق json، بالإضافة إلى سلوك 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)
  • إضافة نصوص برمجية تجريبية لإيقاف ميزة "الترجمة أثناء التشغيل" (يتطلب ذلك امتلاك إذن الوصول إلى الجذر أو إعادة تشغيل وقت التشغيل) وإعادة ضبط حالة أداء الجهاز أو الاختبار لا يتم حاليًا نشر هذه المهام كمهام 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 الإضافي لملف الأداء الأساسي. (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 في وحدة مكتبة استخدام الإصدار 8.3 من AGP، ويمكن تفعيله من خلال 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.ID
      • context.build.version.codename - يساوي android.os.Build.VERSION.CODENAME
      • context.build.version.abbreviatedCodename: يشير إلى الحرف الأول من الاسم الرمزي للإصدار التجريبي (بما في ذلك إصدارات الإصدار) (Ie5020)
    • تمت إضافة قائمة profilerOutput إلى إخراج JSON لتسهيل استخدام الأدوات المتعلّقة بعمليات تتبُّع الأداء (مثل Perfetto، وتتبُّع الطرق) (I05ddd، b/332604449)
    • تمت إضافة تحذير عند استخدام أداة "تنسيق اختبارات Android" في وحدات قياس الأداء، لأنّ ذلك سيؤدي إلى استبدال ملفات JSON الناتجة لكل وحدة بشكل متكرر. (Ia1af6، b/286899049)
    • يتم طرحها عندما تكون أسماء الملفات أطول من 200 حرف لتجنُّب الأعطال غير الواضحة عند كتابة الملفات أو بعد معالجتها. (I4a5ab)

الإصدار 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 Benchmark. ويشمل ذلك، على سبيل المثال، نقاط تتبُّع قفل التنشيط. (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، وتمت إعادة ترتيب الوسيطات بحيث تكون الوسيطة الأكثر شيوعًا (mode) في وقت سابق من قائمة الوسيطات، ما قلّل من الحاجة إلى تحديد أسماء المَعلمات. (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 على عمليات الربط هذه.

إصلاح الأخطاء

  • تمّت إزالة الاستثناء من المكوّن الإضافي 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 الآن بشكل صحيح ضبط حالة الترجمة بالكامل لكل عملية ترجمة، ويتطلّب ذلك إعادة تثبيت حزمة 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 أو إصدار أحدث في التطبيق المستهدَف، لتفعيل ميزة "التقاط الملف الشخصي" أو "إعادة ضبط الملف الشخصي" وميزة "محو ذاكرة التخزين المؤقت لبرنامج معالجة الرسومات".
  • Metric APIs التجريبية الجديدة

    • تمت إضافة TraceSectionMetric التجريبي، الذي يتيح استخراج توقيت بسيط من وحدات trace("") {} في تطبيقك، أو TraceMetric للاستفادة من إمكانات طلب البحث الكاملة في Perfetto TraceProcessor.
    • تمت إضافة 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 من واجهة برمجة التطبيقات، بما في ذلك اختبارات الأداء الدقيقة وواجهات برمجة التطبيقات التجريبية 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 عند ظهور رسالة الخطأ "طباعة واجهة برمجة التطبيقات المطلوبة <=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 تتطلّب إذن الوصول إلى الجذر على Android 13 (المستوى 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

الإصدار 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>، ثم تخطّي خطوة التجميع في macrobenchmark.

    على سبيل المثال، في ملف 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 على هذه المراجعات.

تغييرات واجهة برمجة التطبيقات

  • أضِف ميزة "تتبُّع النظام" ذات التكلفة المنخفضة إلى مخرجات اختبار microbench على نظام التشغيل 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 على هذه المراجعات.

الميزات الجديدة

إصلاح الأخطاء

  • تم تعديل نموذج رمز 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. يمكنك حلّ هذه المشكلة إما من خلال تشغيلها من خلال Studio أو تحليل ملف JSON الناتج للحصول على النتائج.
  • يتعذّر على ميزة "إعداد معايير الأداء" سحب التقرير من الأجهزة التي تم تثبيت تطبيق عليها باستخدام معرّف تطبيق ينتهي بـ "android" أو "download" (لا تُحتسَب حالة الأحرف). على المستخدمين الذين يواجهون هذه المشكلة ترقية المكوّن الإضافي لنظام Gradle المتوافق مع Android إلى الإصدار 4.2-alpha01 أو إصدار أحدث.

الإصدار 1.0.0

الإصدار 1.0.0 من أداة قياس الأداء

20 تشرين الثاني (نوفمبر) 2019

تم إصدار الإصدارات androidx.benchmark:benchmark-common:1.0.0 وandroidx.benchmark:benchmark-gradle-plugin:1.0.0 وandroidx.benchmark:benchmark-junit4:1.0.0 بدون أي تغييرات عن الإصدار 1.0.0-rc01. يحتوي الإصدار 1.0.0 على عمليات الربط هذه.

الميزات الرئيسية في الإصدار 1.0.0

تتيح لك مكتبة 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) أو عند التشغيل في عملية التكامل المستمر. لمزيد من المعلومات، اطّلِع على مقالتَي إنشاء مقاييس الأداء بدون 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. تتوفّر عمليات الربط المضمّنة في هذا الإصدار هنا.