معیار

عملکرد کدتان را به‌طور دقیق در Android Studio بسنجید.
جدیدترین به‌روزرسانی نسخه پایدار نامزد انتشار انتشار نسخه بتا نسخه آلفا
‫۷ اکتبر ۲۰۲۶ 1.5.0 - - 1.6.0-alpha01

اعلام وابستگی‌ها

برای افزودن وابستگی به «معیار سنجش»، باید مخزن Google Maven را به پروژه‌تان اضافه کنید. برای کسب اطلاعات بیشتر، مخزن Maven در Google را بخوانید.

‫Macrobenchmark

برای استفاده از Macrobenchmark در پروژه‌تان، وابستگی‌های زیر را به فایل build.gradle برای واحد macrobenchmark اضافه کنید:

شیار

dependencies {
  androidTestImplementation "androidx.benchmark:benchmark-macro-junit4:1.5.0"
}

کاتلین

dependencies {
  androidTestImplementation("androidx.benchmark:benchmark-macro-junit4:1.5.0")
}

ریز محک

برای استفاده از Microbenchmark در پروژه‌تان، وابستگی‌های زیر را به فایل build.gradle برای واحد microbenchmark خود اضافه کنید:

شیار

dependencies {
    androidTestImplementation "androidx.benchmark:benchmark-junit4:1.5.0"
}

android {
    ...
    defaultConfig {
        ...
        testInstrumentationRunner "androidx.benchmark.junit4.AndroidBenchmarkRunner"
    }
}

کاتلین

dependencies {
    androidTestImplementation("androidx.benchmark:benchmark-junit4:1.5.0")
}

android {
    ...
    defaultConfig {
        ...
        testInstrumentationRunner = "androidx.benchmark.junit4.AndroidBenchmarkRunner"
    }
}

کتابخانه Microbenchmark همچنین یک پلاگین Gradle را برای استفاده با ماژول microbenchmark ارائه می دهد. این افزونه پیش‌فرض‌های پیکربندی ساخت را برای ماژول تنظیم می‌کند، نسخه خروجی معیار را برای میزبان تنظیم می‌کند و وظیفه ./gradlew lockClocks را ارائه می‌کند.

برای استفاده از این افزونه، خط زیر را در بلوک «plugins» در فایل build.gradle سطح بالای خود قرار دهید:

شیار

plugins {
  id 'androidx.benchmark' version '1.5.0' apply false
}

کاتلین

plugins {
  id("androidx.benchmark") version "1.5.0" apply false
}

سپس افزونه را در فایل build.gradle ماژول بنچمارک خود اعمال کنید

شیار

plugins {
  id 'androidx.benchmark'
}

کاتلین

plugins {
    id("androidx.benchmark")
}

بازخورد

بازخوردتان به بهبود Jetpack کمک می‌کند. اگر مشکل جدیدی پیدا کردید یا ایده‌ای برای بهبود این کتابخانه دارید، به ما اطلاع دهید. لطفاً قبل‌از ایجاد کتابخانه جدید، مشکلات موجود در این کتابخانه را بررسی کنید. با کلیک کردن روی دکمه ستاره می‌توانید رأی خود را به یک مشکل موجود اضافه کنید.

ایجاد مشکل جدید

برای اطلاعات بیشتر، مستندات Issue Tracker را ببینید.

نسخه ۱.۶

نسخه 1.6.0-alpha01

۷ اکتبر ۲۰۲۶

‫androidx.benchmark:benchmark-*:1.6.0-alpha01 منتشر شد. نسخه 1.6.0-alpha01 شامل این تعهدها است.

ویژگی‌های جدید

  • تکلیف محک :lockClocks اکنون درصورت دردسترس بودن، به‌جای پیاده‌سازی قبلی فقط ریشه، از حالت عملکرد ثابت استفاده می‌کند. این یعنی می‌توانید ساعت‌ها را در دستگاه‌های فیزیکی بسیار بیشتری قفل کنید تا نتایج پایداری داشته باشید، به‌ویژه برای ریزسنجش‌های پایدار مفید است. لطفاً مشکلات مربوط به کاهش عملکرد حرارتی را با رفتار جدید گزارش کنید، اگر آن را مشاهده کردید. (I0d032)

تغییرات میانای برنامه‌سازی کاربردی

  • ‫MemoryProfilingConfig به ExperimentalConfig اضافه شد تا اجرای سنجش‌های کلان بتواند در نمایه‌سازی پشته Perfetto شرکت کند. (Ibc931)

رفع اشکال‌ها

  • اشکالی در microbenchmark برطرف شد که در آن ضبط گزارش ردیابی روش‌ها گاهی اوقات برای جلوگیری از ANR با احتیاط بیش‌ازحد نادیده گرفته می‌شد. (Ifc307)
  • رفع مشکل ضبط نمایه مبنا برای فرایندهایی که از الگوی نام‌گذاری :<suffix> استفاده نمی‌کنند. (I512ab)
  • پیوندهای ردیابی نمایه‌ساز اکنون در بخش جداگانه «ردیابی‌های نمایه‌سازی» در خلاصه‌های IDE گزارش می‌شود. (Id639f)
  • اشکالی در پاک‌سازی فایل مجازی که منجر به Unable to flush profiles for <packagename> می‌شد برطرف شد. (I48ccc)
  • همگام‌سازی در گزارش ردیابی روش‌های جاسازی‌شده در گزارش ردیابی سیستم را اصلاح کنید. Ifd2e33 b/537688349
  • افزونه Baseline Profile Gradle - CollectBaselineProfileTask بهبود یافت تا از پیدا کردن فایل‌های test-result.pb در زیرفهرست‌های راهنما پشتیبانی کند و سازگاری با پلاتفرم آزمایش داخلی جدید را فعال کند. Id9c488 b/543799367

نسخه 1.5

نسخه ۱.۵.۰

‫۹ سپتامبر ۲۰۲۶

‫androidx.benchmark:benchmark-*:1.5.0 منتشر شد. نسخه ۱.۵.۰ حاوی این ثبت‌ها است.

نسخه 1.5.0-rc02

۲۶ اوت ۲۰۲۶

‫androidx.benchmark:benchmark-*:1.5.0-rc02 منتشر شد. نسخه 1.5.0-rc02 حاوی این ارسال‌ها است.

نسخه 1.5.0-rc01

‫۱۲ اوت ۲۰۲۶

‫androidx.benchmark:benchmark-*:1.5.0-rc01 منتشر شد. نسخه 1.5.0-rc01 شامل این تعهدات است.

نسخه 1.5.0-beta01

‫۲۹ ژوئیه ۲۰۲۶

‫androidx.benchmark:benchmark-*:1.5.0-beta01 منتشر شد. نسخه 1.5.0-beta01 حاوی این موارد ثبت است.

تغییرات میانای برنامه‌سازی کاربردی

  • PerfettoCapture و PerfettoTraceRule اکنون می‌توانند ردیابی‌های درحال پردازش را ضبط کنند و آن‌ها را برای بسته هدف ادغام کنند. (I9a00b، b/497959820)

نسخه 1.5.0-alpha07

۱ ژوئیه ۲۰۲۶

‫androidx.benchmark:benchmark-*:1.5.0-alpha07 منتشر شد. نسخه 1.5.0-alpha07 شامل این تعهدات است.

تغییرات میانای برنامه‌سازی کاربردی

  • ثبت ردیابی Perfetto ساده‌شده در دستگاه. (I48810)
  • انتقال میاناهای برنامه‌سازی کاربردی افزونه آزمایشی TraceProcessor.runServer از androidx.benchmark:benchmark-macro به androidx.benchmark:benchmark-common و به بسته androidx.benchmark. این کار استفاده از آن‌ها را در ریزسنجش‌ها در آینده امکان‌پذیر می‌کند. (Ie25bb، b/393640753)

رفع اشکال‌ها

  • پیاده‌سازی traceprocessor (و همچنین ضبط «ردیابی Perfetto» غیردسته‌بندی‌شده) را به‌روزرسانی کنید تا از Perfetto نسخه ۵۶.۰ (I8fb9d) استفاده کند
  • androidx.benchmark.requireAot و androidx.benchmark.requireAot را به‌طور پیش‌فرض روی true تنظیم کنید. این پیش‌فرض‌های ایمن‌تر تضمین می‌کنند که کامپایل پیش‌از اجرای ریز محک‌ها انجام می‌شود (به‌طور پیش‌فرض با افزونه محک gradle هنگام استفاده از AGP 8.4+‎ روشن است)، و اینکه measureRepeated در رشته اصلی استفاده نمی‌شود، جایی که می‌تواند باعث ANR شود. (I1bc3c، b/379115078)
  • مهلت زمانی کشتن perfetto از ۵ به ۳۰ ثانیه افزایش یافت (فقط برای جلسات Perfetto ضبط‌شده با محک زدن). وقتی مشکل پیش می‌آید، گزارش خطای واضح‌تری اضافه می‌شود. (If188f،‏ b/435589290)

نسخه 1.5.0-alpha06

۶ مه ۲۰۲۶

‫androidx.benchmark:benchmark-*:1.5.0-alpha06 منتشر شد. نسخه 1.5.0-alpha06 حاوی این ارسال‌ها است.

رفع اشکال‌ها

  • هنگام انتقال فایل‌ها از دایرکتوری برونداد معیار سنجش به دایرکتوری برونداد آزمایش اضافی، محیط‌های چندکاربری را به‌خوبی مدیریت کنید. (I90da5، b/489358149)

نسخه 1.5.0-alpha05

‫۲۵ مارس ۲۰۲۶

‫androidx.benchmark:benchmark-*:1.5.0-alpha05 منتشر شد. نسخه 1.5.0-alpha05 حاوی این ارسال‌ها است.

رفع اشکال‌ها

  • ‫ArtMetric به‌روزرسانی شد تا بسته‌های سطح بالا را درنظر بگیرد، به‌ویژه هنگام استفاده از AGP/R8 9.1+ یا گزینه سراسری -repackageclasses مهم است. قبلاً، ArtMetric نمی‌توانست این بار کلاسی را در اندازه‌گیری‌های artClassLoad... خود تشخیص دهد. (If8a35،‏ b/487402058)

ویژگی‌های جدید - آرگومان ابزار دقیق جدید androidx.benchmark.requireLockedClocks اضافه شده است که امکان فعال کردن بررسی قفل بودن ساعت‌های CPU را برای دستگاه‌های ریشه‌دار فراهم می‌کند. (Id82e8، b/468039042)

نسخه 1.5.0-alpha04

‫۱۱ مارس ۲۰۲۶

‫androidx.benchmark:benchmark-*:1.5.0-alpha04 منتشر شد. نسخه 1.5.0-alpha04 حاوی این ارسال‌ها است.

تغییرات میانای برنامه‌سازی کاربردی

  • ‫JvmOverloads به PowerMetric.Energy و PowerMetric.Power (Iac0d0،‏ b/481371562) اضافه شد.

رفع اشکال‌ها

  • ArtMetric برای درنظر گرفتن بسته‌های سطح بالا به‌روز شد، به‌ویژه هنگام استفاده از AGP/R8 نسخه ۹.۱ یا بالاتر، یا گزینه سراسری -repackageclasses. قبلاً، ArtMetric نمی‌توانست این بارگذاری‌های کلاس را در اندازه‌گیری‌های artClassLoad... خود شناسایی کند. (I207ca، b/487402058)

نسخه 1.5.0-alpha03

‫۱۱ فوریه ۲۰۲۶

‫androidx.benchmark:benchmark-*:1.5.0-alpha03 منتشر شد. نسخه 1.5.0-alpha03 حاوی این ارسال‌ها است.

  • به‌روزرسانی شد تا به UiAutomator 2.4 beta وابسته باشد.

نسخه 1.5.0-alpha02

‫۲۸ ژانویه ۲۰۲۶

‫androidx.benchmark:benchmark-*:1.5.0-alpha02 منتشر شد. نسخه 1.5.0-alpha02 شامل این تغییرات است.

رفع اشکال‌ها

  • افزودن پشتیبانی جزئی برای تولید نمایه مبنا برای ماژول‌های چندپلاتفرمی Kotlin. معمولاً وابستگی‌ها به نمایه‌ها را می‌توان بااستفاده از پیکربندی baselineProfile Gradle در بلوک وابستگی‌ها تعریف کرد، اما این روش درحال‌حاضر برای واحدهای KMP کار نمی‌کند.

    kotlin {
      androidLibrary {
        namespace = "com.example.namespace"
        compileSdk = 36
      }
      sourceSets {
        androidMain.dependencies {
          // THIS DOES NOT WORK
          // baselineProfile(":yourProducerProject")
        }
      }
    }
    
  • درعوض، باید وابستگی‌هایتان را بااستفاده از افزونه baselineProfile تعریف کنید. (Ie19c4)

    plugins {
        id("org.jetbrains.kotlin.multiplatform")
        id("com.android.kotlin.multiplatform.library")
        id("androidx.baselineprofile.consumer")
    }
    
    kotlin {
      androidLibrary {
        namespace = "com.example.namespace"
        compileSdk = 36
      }
      sourceSets {
        androidMain.dependencies {
          // ...
        }
      }
    }
    // Define dependencies
    // This works !
    baselineProfile {
      variants {
        androidMain {
          from(project(":yourProducerProject"))
        }
      }
    }
    

نسخه 1.5.0-alpha01

‫۱۷ دسامبر ۲۰۲۵

‫androidx.benchmark:benchmark-*:1.5.0-alpha01 منتشر شد. نسخه 1.5.0-alpha01 حاوی این ارسال‌ها است.

  • ‫Macrobenchmark 1.5 از UiAutomator 2.4 برای ساده کردن تعامل با برنامه اندازه‌گیری‌شده استفاده می‌کند. شیء MacrobenchmarkScope اکنون UiAutomatorTestScope را گسترش می‌دهد که به شما امکان می‌دهد از میاناهای برنامه‌سازی کاربردی مدرن UiAutomator مانند onElement { ... }.click() استفاده کنید.
  • برای اطلاعات بیشتر درباره UiAutomator نسخه ۲.۴، به اسناد مراجعه کنید.

ویژگی‌های جدید

  • افزایه Gradle «نمایه مبنا» دیگر در AGP 9.0 به newDsl=false نیاز ندارد (Iaaac7،‏ b/443311090)
  • پیکربندی ردیابی را گسترش دهید تا اندازه هسته (مثلاً کوچک/بزرگ) در ردیابی‌های سیستم/perfetto ضبط‌شده در محک گنجانده شود. (I8e397، b/457469959)

تغییرات میانای برنامه‌سازی کاربردی

  • (در UiAutomator) انتظار startActivity به انتظار برای پنجره جدید تغییر کرد. (I35da6، b/440021797)
  • ‫BlackHole API را در androidx.benchmark پایدار کنید. (I2b67e، b/451749438)
  • ‫@JvmOverloads را برای سازنده‌های راحتی برای PerfettoTraceRule اضافه کنید. (I1510a، b/443763207)

نسخه ۱.۴

نسخه ۱.۴.۱

‫۱۰ سپتامبر ۲۰۲۵

‫androidx.benchmark:benchmark-*:1.4.1 منتشر شد. نسخه ۱.۴.۱ حاوی این ثبت‌ها است.

رفع اشکال‌ها

  • ‫perfettoSdkTracing=true ثابت (مثلاً هنگام ردیابی Compose در ریز محک) اگر فرایند هدف ازقبل درحال اجرا بود و StartupMode مشخص نشده بود، آن را ازبین می‌برد. (Ib2c1f)

نسخه ۱.۴.۰

‫۳۰ ژوئیه ۲۰۲۵

‫androidx.benchmark:benchmark-*:1.4.0 منتشر شد. نسخه 1.4.0 شامل این تعهدات است.

تغییرات مهم از نسخه ۱.۳.۰

Microbenchmark

  • تکالیف Gradle lockClocks و unlockClocks به پروژه‌های محک منتقل شدند، به‌جای اینکه در سطح بالا باشند تا جداسازی پروژه Gradle رعایت شود.
  • BenchmarkRule بازسازی شد تا بر روی روال‌های هم‌زمان ساخته شود و از رفتار yield() بهتر پشتیبانی کند. این کار باید خطر ANR را درطول اجراهای محک، به‌ویژه اجراهای طولانی CI، به‌طور قابل‌توجهی کاهش دهد. توجه: «معیارهای میانای کاربر» باید با measureRepeatedOnMainThread اجرا شود

Macrobenchmark

  • راه‌حل اضافه‌شده در میانای برنامه‌سازی کاربردی ۳۴+ برای CompilationMode.None() عملکرد ناسازگاری خواهد داشت زیرا درستی‌سنجی ART اکنون تاحدی برنامه‌ها را پس‌از اولین راه‌اندازی کامپایل می‌کند.
  • ویژگی آزمایشی - Startup Insights می‌تواند با ارسال MacrobenchmarkRule(..., experimentalConfig = ExperimentalConfig(StartupInsightsConfig(isEnabled = true)))، برخی‌از مشکلات رایج را در Macrobenchmark راه‌اندازی برجسته کند.
  • ArtMetric اضافه شد که می‌تواند برای شناسایی «ترجمه هم‌زمان» و بار کردن کلاس بهینه‌سازی‌نشده استفاده شود - هر دو برای اعتبارسنجی بهینه‌سازی‌های «نمایه پایه» مفید هستند.

نمایه‌های مبنا

  • BaselineProfileRule اکنون نمایه‌ها را برای برنامه‌های چندفرایندی جمع‌آوری می‌کند.

تغییرات دیگر

  • TraceProcessor به کتابخانه خودش (androidx.benchmark:benchmark-traceprocessor) منتقل شده است تا بتوان از آن در موارد دیگر خارج از سنجه‌های Macrobenchmark استفاده کرد. همچنین با تعریف ServerLifecycleManager خودتان می‌توانید آن را در Desktop JVM اجرا کنید.

نسخه 1.4.0-rc01

‫۱۸ ژوئن ۲۰۲۵

‫androidx.benchmark:benchmark-*:1.4.0-rc01 منتشر شد. نسخه 1.4.0-rc01 شامل این تعهدات است.

رفع اشکال‌ها

  • راهکاری برای تصاویر زمان اجرا اضافه شد که باعث می‌شد CompilationMode.None() عملکرد بدترین حالت را پس‌از اولین تکرار اندازه‌گیری نکند. متأسفانه این راهکار موقت نیاز به ۵ ثانیه تأخیر دارد تا تصویر زمان اجرا را در ابتدای هر مجموعه سنجش کلان به‌صورت عمدی خراب کند (I4a4f1).

نسخه 1.4.0-beta02

‫۴ ژوئن ۲۰۲۵

‫androidx.benchmark:benchmark-*:1.4.0-beta02 منتشر شد. نسخه 1.4.0-beta02 شامل این تعهدات است.

تغییرات میانای برنامه‌سازی کاربردی

  • ‫BaselineProfileConfig.Builder اضافه شد تا فراخوانی BaselineProfileRule.collectWithResults() برای توسعه‌دهندگان جاوا آسان‌تر شود. (I94905)

نسخه 1.4.0-beta01

۷ مه ۲۰۲۵

‫androidx.benchmark:benchmark-*:1.4.0-beta01 منتشر شد. نسخه 1.4.0-beta01 شامل این تعهدات است.

تغییرات میانای برنامه‌سازی کاربردی

  • متغیر سازنده PerfettoTraceRule که PerfettoConfig را می‌پذیرد اضافه شد (Ie53ba)

رفع اشکال‌ها

  • قالب پیوند اطلاعات آماری راه‌اندازی TraceProcessor به‌روزرسانی شد تا از افزایه صحیح و جداکننده واضح‌تر استفاده شود (: کوتاه‌تر از %3A است و هر دو پشتیبانی می‌شوند) (Ie18ef)
  • همیشه از توقف اجباری برای بستن فرایندها استفاده کنید، حتی وقتی دستگاه روت شده است و برنامه‌های سیستم را می‌بندید. استثناهای فرم را اصلاح می‌کند: Expected no stdout/stderr from killall ... No such process. (Idca2c)

همیاری خارجی

  • مدیریت‌کننده استثنای پراکسی برای TraceProcessorHttpServer اضافه شد (I480f5)

نسخه 1.4.0-alpha11

‫۹ آوریل ۲۰۲۵

‫androidx.benchmark:benchmark-*:1.4.0-alpha11 منتشر شد. نسخه 1.4.0-alpha11 حاوی این ارسال‌ها است.

تغییرات میانای برنامه‌سازی کاربردی

  • مهلت زمانی آرگومان TraceProcessor تغییر کرد: مدت زمان به timeoutMs طولانی برای کاربردپذیری تماس‌گیرنده Java. (I9fbb5)
  • سازنده TraceProcessor را به‌عنوان داخلی علامت‌گذاری کنید. فراخوانندگان باید از TraceProcessor.startServer یا TraceProcessor.runServer استفاده کنند. (Ia8c5b)

رفع اشکال‌ها

  • هنگام ازبین بردن برنامه با MacrobenchmarkScope.killProcess، نتایج فرمان ازبین بردن را اعتبارسنجی کنید تا از خرابی بی‌صدا و خطای اتمام مهلت جلوگیری شود. (I84555)

به‌روزرسانی‌های وابستگی

  • این کتابخانه اکنون سطح زبان Kotlin 2.0 را هدف‌یابی می‌کند و به KGP 2.0.0 یا جدیدتر نیاز دارد. (Idb6b5)

نسخه 1.4.0-alpha10

‫۲۶ مارس ۲۰۲۵

‫androidx.benchmark:benchmark-*:1.4.0-alpha10 منتشر شد. نسخه 1.4.0-alpha10 حاوی این موارد ارسال است.

تغییرات میانای برنامه‌سازی کاربردی

  • زمان وقفه پیش‌فرض برای بارگذاری و پرسمان سرور TraceProcessor به ۱۲۰ ثانیه افزایش یافت (قبلاً ۶۰/۳۰ ثانیه بود) و هر دو با یک پارامتر زمان وقفه قابل‌پیکربندی شدند. (Ifec87)

رفع اشکال‌ها

  • چند مشکل که هنگام محک‌زنی یا ضبط نمایه‌های برنامه بدون profileinstaller رخ می‌داد برطرف شد و BroadcastReciever اضافه شد. این فقط بر اجرا در دستگاه‌های با دسترسی ریشه‌ای تأثیر می‌گذارد. (Ied308)

نسخه 1.4.0-alpha09

‫۱۲ مارس ۲۰۲۵

‫androidx.benchmark:benchmark-*:1.4.0-alpha09 منتشر شد. نسخه 1.4.0-alpha09 شامل این تغییرات است.

تغییرات میانای برنامه‌سازی کاربردی

  • ‫TraceProcessor و «میانای برنامه‌سازی کاربردی جلسه» با «دستگیره‌های» بستنی اضافه شد تا استفاده از چرخه‌های عمر سفارشی آسان‌تر شود. این همچنین گامی به‌سوی تسهیل استفاده از Coroutine و Java API است. توابع افزونه برای TraceProcessor.runServer {} اکنون به‌عنوان آزمایشی علامت‌گذاری شده‌اند، زیرا احتمالاً در آینده منتقل خواهند شد و غیرآزمایشی خواهند شد. (I358b4)

رفع اشکال‌ها

  • به‌دلیل تغییر در جعبه ابزار pgrep که اکنون برای چاپ خط فرمان کامل به -a نیاز دارد، ضبط «نمایه مبنا و معیار» ثابت با API 36 کار نمی‌کند. (Idc991)
  • پیکربندی ردیابی پیش‌فرض را فیلتر کنید تا خطر ازدست رفتن داده‌ها در ردیابی‌ها در سطوح جدیدتر API کاهش یابد. (I54e8a)
  • آرگومان ابزار دقیق آزمایشی androidx.benchmark.killExistingPerfettoRecordings اضافه شد که می‌تواند روی false تنظیم شود تا امکان ادامه ضبط ردیابی perfetto ازقبل موجود فراهم شود. به‌طور پیش‌فرض، ضبط‌های ردیابی perfetto ازقبل موجود در دستگاه متوقف می‌شوند تا از تداخل جلوگیری شود. (I02a3c)
  • فیلد JSON context.osCodenameAbbreviated برای نسخه‌های سیستم‌عامل منتشرشده در سطح API 35 و بالاتر، اکنون REL خواهد بود، زیرا پلاتفرم زیرین دیگر از نام‌های کد غیرعددی پشتیبانی نمی‌کند. (Ib17fd)
  • خرابی در FrameTimingMetric را هنگام رخ دادن فریم‌های همگام‌سازی‌شده برطرف می‌کند. (I7c6f4، b/394610806)
  • دیگر فرض نکنید Choreographer#doFrame بالای چارچوب پشته‌ای در رشته اصلی برای FrameTimingQuery است. (Iee0e0، b/340206285)

نسخه 1.4.0-alpha08

‫۱۲ فوریه ۲۰۲۵

‫androidx.benchmark:benchmark-*:1.4.0-alpha08 منتشر شد. نسخه 1.4.0-alpha08 شامل این تعهدها است.

تغییرات میانای برنامه‌سازی کاربردی

  • ‫TraceProcessor.runSession() میانای برنامه‌سازی افزونه به حالت آزمایشی منتقل شد، زیرا احتمالاً درنهایت به سازنده‌های عینی در Android منتقل خواهند شد. (Ib0528، b/393640753)
  • اکنون بیشتر پیاده‌سازی Startup Insights عمومی/آزمایشی است و به آرتیفکت TraceProcessor منتقل می‌شود. StartupInsights را ببینید. (I0aa00)
  • BenchmarkRule.runWithTimingDisabled {} را به‌نفع BenchmarkRule.runWithMeasurementDisabled {} منسوخ کنید، که رفتار را واضح‌تر توصیف می‌کند - همه سنجه‌ها موقتاً متوقف شده‌اند. علاوه‌براین، کلاس فوق‌العاده MicrobenchmarkScope را آشکار کنید زیرا اعلام مجدد تابع runWithMeasurementDisabled برای دسترسی آزاد امکان‌پذیر نیست، چون درون‌خطی است. (I9e23b، b/389149423، b/149979716)
  • کتابخانه‌های محک به Kotlin 2.0 منتقل شده‌اند. (I9d1e0)
  • متغیر مستقل androidx.benchmark.startupProfiles.enable ابزار دقیق برداشته شد. دیگر مفید نیست، زیرا می‌توان آن را با includeInStartupProfile arg در BaselineProfileRule.collect() کنترل کرد. (I39eb4)

رفع اشکال‌ها

  • تعداد توابع داخلی «ریزسنجش» که درطول نمایه‌سازی فراخوانده می‌شوند کاهش یافت تا برای نمونه، «ردیابی‌های روش» واضح‌تر شود (Ifaed8)
  • اصلاح احتمالی برای ازکارافتادن‌ها: «Failed to stop [ProcessPid(processName=perfetto, pid=...)]» (توقف [ProcessPid(processName=perfetto, pid=...)] ناموفق بود). اکنون وقتی فرایند Perfetto پس‌زمینه نتواند قبل‌از اجرای محک متوقف شود، Benchmark به‌جای ازکار افتادن، پیامی را ثبت می‌کند. (I37d3e، b/323601788)
  • ‫IllegalStateExceptions با برچسب «Expected pm dump-profiles stdout» که به‌دلیل بررسی بیش‌ازحد سخت‌گیرانه قالب خروجی ایجاد شده بود برطرف شد. (I358dc)

نسخه 1.4.0-alpha07

‫۲۹ ژانویه ۲۰۲۵

‫androidx.benchmark:benchmark-*:1.4.0-alpha07 منتشر شد. نسخه 1.4.0-alpha07 حاوی این ارسال‌ها است.

ویژگی‌های جدید

  • ‫BaselineProfileRule اکنون میانای برنامه‌سازی کاربردی collectWithResults(...) را معرفی می‌کند که شامل فهرستی از مسیرهای نمایه‌های محاسباتی است. (I056f8)
  • آرگومان ابزار دقیق androidx.benchmark.measureRepeatedOnMainThread.throwOnDeadline اضافه شد که می‌توان آن را روی false تنظیم کرد تا رفتار پرتاب در مهلت مقرر measureRepeatedOnMainThread برای آزمایش محلی غیرفعال شود. به‌جز در این مورد توصیه نمی‌شود، زیرا احتمال بروز ANR درطول آزمایش‌ها را افزایش می‌دهد. (Idbeec، b/353226476)

تغییرات میانای برنامه‌سازی کاربردی

  • @JvmOverloads به سازنده MicrobenchmarkConfig اضافه شد. (I13fd3)
  • ‫BenchmarkRule بازسازی شد تا روی روتین‌های همکار ساخته شود و از عملکرد بهتر yield() پشتیبانی کند. این بازسازی کد چندین میانای برنامه‌سازی کاربردی آزمایشی BenchmarkState را حذف کرد، اما درصورت نیاز جایگزین‌هایی برای آن‌ها ارائه خواهد شد. علاوه‌براین، runWithMeasurementDisabled برای شفاف‌سازی رفتار اضافه شد (همه اندازه‌گیری‌ها موقتاً متوقف شده است). در آینده، runWithTimingDisabled منسوخ خواهد شد. (I19837، b/389149423، b/311242861)
  • ‫PerfettoTraceProcessor را به TraceProcessor در یک آرتیفکت androidx.benchmark:benchmark-traceprocessor جدید منتقل کنید و بیشتر میانای برنامه‌سازی کاربردی آن را غیرآزمایشی کنید. هر TraceMetric سفارشی یا هر چیزی که از ردیابی‌ها می‌خواند باید به وارد کردن TraceProcessor جدید به‌روزرسانی شود. «میانای برنامه‌سازی کاربردی» جدید TraceProcessor دقیقاً مثل میانای قدیمی کار می‌کند، اما یک کتابخانه رابط مستقل (تا حدودی مشابه لایه androidx.sqlite از Room) با پیاده‌سازی ویژه Android است که در macrobenchmark ساخته شده است. از این آرتیفکت جدید می‌توان در ماشین مجازی جاوا (JVM) نیز استفاده کرد، اما درحال‌حاضر باید نسخه خودتان از باینری TraceProcessor را شروع کنید و درگاهی برای اتصال به آن ارائه دهید. (I3a767،‏ I62563،‏ b/381134564)

رفع اشکال‌ها

  • وقتی MacrobenchmarkScope.startActivityAndWait نتواند فرایند هدف را راه‌اندازی کند (احتمالاً به‌دلیل خرابی در فرایند هدف)، پیام خطای واضح‌تری نمایش داده می‌شود، به‌جای پیام مبهم‌تر «راه‌اندازی فعالیت تکمیل نشد» (I3539b)
  • چندین خطای نحوی در نمونه‌های Kotlin و برجسته‌سازی نحوی در چندین نمونه Java / build.gradle برطرف شد. (Ib3808)
  • Clarified ArtMetric and CaptureInfo parameter docs. (I96e60)

نسخه 1.4.0-alpha06

‫۱۱ دسامبر ۲۰۲۴

‫androidx.benchmark:benchmark-*:1.4.0-alpha06 منتشر شد. نسخه 1.4.0-alpha06 حاوی این موارد ثبت است.

تغییرات میانای برنامه‌سازی کاربردی

  • Removed usage of @Language("sql") in PerfettoTraceProcessor.Session.query(), as Studio highlighting/parsing is broken. (Idc2fa،‏ b/377733398)

رفع اشکال‌ها

  • این کتابخانه اکنون از حاشیه‌نویسی‌های پوچی JSpecify استفاده می‌کند که از نوع استفاده هستند. توسعه‌دهندگان Kotlin باید از آرگومان کامپایلر زیر برای اجرای استفاده صحیح استفاده کنند: -Xjspecify-annotations=strict (این پیش‌فرض از نسخه ۲.۱.۰ کامپایلر Kotlin شروع می‌شود). (I46810، b/326456246)
  • Corrected ArtMetric to report class load (not init), and improved docs to clarify runtime behavior. (I9915c)
  • در Android Multiuser (چندکاربره Android)، دستورات را به‌عنوان ریشه فقط در دستگاه‌های روت‌شده اجرا کنید. (I88b44)

نسخه 1.4.0-alpha05

‫۱۳ نوامبر ۲۰۲۴

‫androidx.benchmark:benchmark-*:1.4.0-alpha05 منتشر شد. نسخه 1.4.0-alpha05 شامل این تعهدها است.

رفع اشکال‌ها

  • مشکلی در API 34 و بالاتر برطرف شد که در آن CompilationMode.None() عملکردی ناسازگار داشت که نشان‌دهنده عملکرد اولیه و بدترین عملکرد نبود. این کار باعث می‌شود تغییر پلاتفرمی که به وضعیت کامپایل ARTverify اجازه می‌دهد برنامه‌ها را کمی پس‌از اولین راه‌اندازی به‌طور جزئی کامپایل کند (فقط بر بارگیری کلاس تأثیر می‌گذارد) دور زده شود. (Ie48d0)
  • مشکلی برطرف شد که در آن ردگیری‌ها (به‌ویژه ردگیری‌های کوتاه) می‌توانستند ضبط شوند و به‌دلیل کوتاه شدن نام فرایند در ردگیری Perfetto، اندازه‌گیری از «سنجه‌های Macrobenchmark» داخلی را گزارش نمی‌کردند. اکنون macrobenchmark با جستجوی نام بسته کوتاه‌شده در همه پُرسمان‌های داخلی، علاوه‌بر نام بسته موردانتظار، این مشکل را حل می‌کند. توجه داشته باشید که پیاده‌سازی‌های سفارشی TraceMetric یا دیگر فراخوانندگان مستقیم PerfettoSession.query می‌توانند با تغییر process.name LIKE "$packageName" در پُرسمان Perfetto به‌جای (process.name LIKE "$packageName" OR process.name LIKE "$(packageName.takeLast(15))")، همین رفتار را پیاده‌سازی کنند. (I5bf01، b/377565760)

نسخه 1.4.0-alpha04

‫۳۰ اکتبر ۲۰۲۴

‫androidx.benchmark:benchmark-*:1.4.0-alpha04 منتشر شد. نسخه 1.4.0-alpha04 حاوی این ارسال‌ها است.

ویژگی‌های جدید

  • (آزمایشی) تولید «نمایه پایه» و سنجش عملکرد در برنامه‌های نصب‌شده برای کاربر ثانویه را فعال کنید، برای مثال هر برنامه‌ای در دستگاه‌های Android Auto بدون نمایشگر. این پشتیبانی در برخی سناریوها آزمایش شده است، اما اگر برای شما کار نمی‌کند، با ارسال اشکال به ما اطلاع دهید. (I9fcbe، b/356684617، b/373641155)

رفع اشکال‌ها

  • اکنون isProfileable همیشه در ساخت‌های معیار لغو می‌شود و isDebuggable نیز اکنون همیشه در ساخت‌های معیار و nonMinified (ضبط نمایه‌پایه) لغو می‌شود. (I487fa، b/369213505)
  • مشکل تشخیص تدوین در برخی‌از دستگاه‌های فیزیکی قبل‌از API 28 برطرف شد - بر json context.compilationMode و همچنین عملکرد androidx.benchmark.requireAot=true (که دیگر به‌اشتباه استثنا ایجاد نمی‌کند) تأثیر می‌گذارد (Ic3e08، b/374362482)
  • In CpuEventCounter metrics, throw if invalid measurements are observed (e.g. instructions/cpucycles==0) (I8c503)

نسخه 1.4.0-alpha03

‫۱۶ اکتبر ۲۰۲۴

‫androidx.benchmark:benchmark-*:1.4.0-alpha03 منتشر شد. نسخه 1.4.0-alpha03 حاوی این موارد ارسال است.

تغییرات میانای برنامه‌سازی کاربردی

  • Macrobenchmark: ArtMetric را اضافه می‌کند که می‌توان از آن برای بررسی پوشش نمایه یا عملکرد کلی Android RunTime استفاده کرد. تعداد و مدت کل JIT، مقدار اولیه کلاس (درصورت وجود)، و درستی‌سنجی کلاس را ضبط می‌کند. علاوه‌براین، CaptureInfo را تغییر می‌دهد تا نسخه اصلی اختیاری ART را با پیش‌فرض اضافه کند. ‫(I930f7)
  • coefficientOfVariation را به خروجی JSON محک اضافه کنید تا پایداری را در اجرای محک مشخصی نشان دهد. (Ib14ea)

رفع اشکال‌ها

  • ‫CollectBaselineProfileTask وقتی دستگاه AVD فاصله دارد برطرف شد. (Ia0225, b/371642809)
  • اصلاح احتمالی برای خطاهای ناشی از استثناهای StartupMode.COLD: Package <packagename> must not be running prior to cold start!. اکنون، MacrobenchmarkScope.killProcess() (ازجمله موردی که قبل‌از هر تکرار اجرا می‌شود و برای پیاده‌سازی رفتار StartupMode.COLD استفاده می‌شود) منتظر می‌ماند تا تأیید کند که همه فرایندهای برنامه متوقف شده‌اند. ‫(I60aa6،‏ b/351582215)
  • مشکل نمایش خطای UNLOCKED_ در برخی شبیه‌سازهای ریشه‌دار برطرف شد. (Ic5117)
  • این کتابخانه اکنون از JSpecify nullness annotations استفاده می‌کند که نوع استفاده است. توسعه‌دهندگان Kotlin باید از آرگومان کامپایلر زیر برای اعمال استفاده صحیح استفاده کنند: -Xjspecify-annotations=strict (این آرگومان از نسخه ۲.۱.۰ کامپایلر Kotlin به‌صورت پیش‌فرض شروع می‌شود). (I7104f، b/326456246)

نسخه 1.4.0-alpha02

‫۲ اکتبر ۲۰۲۴

‫androidx.benchmark:benchmark-*:1.4.0-alpha02 منتشر شد. نسخه 1.4.0-alpha02 شامل این تغییرات است.

تغییرات میانای برنامه‌سازی کاربردی

  • تکالیف Gradle lockClocks و unlockClocks به پروژه‌های محک منتقل شدند، به‌جای اینکه در سطح بالا دردسترس باشند. این تغییر ضروری بود زیرا متأسفانه بدون ازهم گسستن جداسازی پروژه، راهی برای ثبت این موارد به‌عنوان کنش‌های سطح بالا وجود ندارد. (I02b8f، b/363325823)

رفع اشکال‌ها

  • BaselineProfileRule اکنون نمایه‌ها را برای برنامه‌های چندفرایندی با علامت دادن به هر فرایند درحال اجرا در پایان بلوک برای تخلیه نمایه‌ها جمع‌آوری می‌کند. اگر کامپایل مبتنی بر نمایه هرگز نتواند فرایندی را برای همه‌فرستی پیدا کند، کامپایل ناموفق خواهد بود، زیرا انتظار نمی‌رود داده‌های نمایه در آن وجود داشته باشد. علاوه‌براین، یک آرگومان ابزار دقیق برای کنترل مدت انتظار تخلیه اضافه شد: androidx.benchmark.saveProfileWaitMillis (I0f519، b/366231469)
  • از Benchmark 1.3.2: Firebase Test Lab (FTL)‎ رفع شد که نمی‌توانست فایل‌های نتایج Baseline Profile یا Macrobenchmark را از Baseline Profile Gradle Plugin دریافت کند. (I2f678, b/285187547)

برای استفاده از FTL، افزایه را در بلوک افزایه با موارد زیر در ماژول نمایه مبنا اعمال کنید:

  plugins {
      ...
      id("com.google.firebase.testlab")
  }

و سپس Firebase Test Lab را با موارد زیر پیکربندی کنید:

  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

‫۱۸ سپتامبر ۲۰۲۴

‫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(...)
      }
  }

سپس اجرای معیار شروع به کار، ردیابی را برای یافتن مشکلات رایج تجزیه‌وتحلیل می‌کند و آن‌ها را پس‌از سنجه‌ها در برونداد آزمایش «استودیو» در برگه معیار چاپ می‌کند، برای نمونه:

StartupBenchmark_startup[startup=COLD,compilationMode=None]
├── Metrics
│   ├──   timeToFullDisplayMs                min  1,147.2,   median  1,208.8,   max  1,307.4
│   └──   timeToInitialDisplayMs             min  1,147.2,   median  1,208.8,   max  1,307.4
├── App Startup Insights
│   ├── App in debuggable mode (expected: false)
│   │   └── seen in iterations: 0(true) 1(true) 2(true) 3(true) 4(true) 5(true) 6(true) 7(true) 8(true) 9(true)
│   ├── Potential CPU contention with another process (expected: < 100000000ns)
│   │   └── seen in iterations: 4(105022546ns)
│   └── Main Thread - Binder transactions blocked (expected: false)
│       └── seen in iterations: 7(true)
└── Traces
    └── Iteration 0 1 2 3 4 5 6 7 8 9

این ویژگی هنوز درحال توسعه است و بهبودهایی در مستندات و قابلیت گسترش آن در آینده اعمال خواهد شد، اما از بازخوردها استقبال می‌کنیم.

ویژگی‌های جدید

  • دارایی gradle androidx.baselineprofile.suppressWarnings برای سرکوب کردن همه هشدارهای نمایه پایه اضافه شد. (314153a)
  • سنجه‌های Microbench اکنون در ردگیری‌های Perfetto به‌عنوان شمارنده نمایش داده می‌شوند. (3214854)
  • افزودن اسکریپت‌های آزمایشی برای غیرفعال کردن jit (نیاز به بازراه‌اندازی ریشه / زمان اجرا دارد)، و بازنشانی وضعیت عملکرد/آزمایش دستگاه. این‌ها درحال‌حاضر به‌عنوان تکالیف Gradle منتشر نشده‌اند. (7c3732b)
  • آرگومان معیار سنجش اضافه شد تا هنگام اجرا در شبیه‌ساز، از آزمایش‌ها صرف‌نظر شود. وقتی ساخت automaticGenerationDuring فعال باشد، محک‌ها تولید نمایه مبنا را نیز راه‌اندازی می‌کنند. اگر از شبیه‌سازها استفاده شود، این کار ناموفق خواهد بود. با متغیر مستقل جدید skipBenchmarksOnEmulator می‌توانیم به‌جای آن از آزمایش صرف‌نظر کنیم. (0c2ddcd)
  • تغییر منطق فعال‌سازی رویداد perf برای اجرا در میانای برنامه‌سازی کاربردی ۲۳+ (۲۵۵۰۴۸)

تغییرات میانای برنامه‌سازی کاربردی

  • متغیر مستقل آزمایشی موجود PerfettoConfig به MacrobenchmarkRule.measureRepeated() به شیء جدید ExperimentalConfig منتقل شد.

رفع اشکال‌ها

  • افزایش تعداد تلاش مجدد lockClocks.sh (99e9dac)
  • اگر نوع ساخت nonMinified و معیار وجود دارد، آن‌ها را ایجاد نکنید. به‌دلیل وجود اشکال، حتی اگر انواع ساخت nonMinified و معیار وجود داشتند، دوباره ایجاد می‌شدند. (e75f0a5)
  • نادیده گرفتن برش‌های غیرپایانی از نتایج TraceSectionMetric. (a927d20)
  • بررسی بهبودیافته شبیه‌ساز برای درنظر گرفتن پیشوند sdk_. (1587de8)
  • بسته‌های غیرفعال در FrameTimingGfxInfoMetric به‌عنوان پاک‌شده درنظر گرفته می‌شوند. (35cc79c)
  • رفع مشکل androidx.benchmark.cpuEventCounter که مقادیر معیوب برای رویدادهای غیردستوری تولید می‌کرد. (06edd59)
  • ‫resumeTiming/runWithTimingDisabled را اصلاح کنید تا ترتیب اولویت معیار را رعایت کند و تأثیر توقف/ازسرگیری معیار با اولویت پایین‌تر را بر نتایج معیار با اولویت بالاتر به‌طور قابل‌توجهی کاهش دهد. برای مثال، اگر از شمارنده‌های cpu perf ازطریق آرگومان ابزار دقیق cpuEventCounter.enable استفاده شود، هنگام وقوع توقف/ازسرگیری، timeNs دیگر به‌طور قابل‌توجهی کاهش نمی‌یابد. (5de0968)

نسخه ۱.۳

نسخه ۱.۳.۴

‫۲۶ مارس ۲۰۲۵

‫androidx.benchmark:benchmark-*:1.3.4 منتشر شد. نسخه ۱.۳.۴ شامل این تعهدات است.

رفع اشکال‌ها

  • ناسازگاری‌های «جداسازی پروژه Gradle» در «افزایه Gradle خط مبنای محک» برطرف شد. (b/404523257)

نسخه ۱.۳.۳

‫۱۶ اکتبر ۲۰۲۴

‫androidx.benchmark:benchmark-*:1.3.3 منتشر شد. نسخه ۱.۳.۳ حاوی این ثبت‌ها است.

رفع اشکال‌ها

  • رفع مشکل CollectBaselineProfileTask وقتی دستگاه AVD در آن فاصله دارد (Ia0225، b/371642809)

نسخه ۱.۳.۲

‫۲ اکتبر ۲۰۲۴

‫androidx.benchmark:benchmark-*:1.3.2 منتشر شد. نسخه ۱.۳.۲ حاوی این ارسال‌ها است.

رفع اشکال‌ها

  • مشکل Firebase Test Lab (FTL) که نمی‌توانست فایل‌های نتایج Baseline Profile یا Macrobenchmark را از Baseline Profile Gradle Plugin دریافت کند برطرف شد. (I2f678, b/285187547)

برای استفاده از FTL، افزایه را در بلوک افزایه با موارد زیر در ماژول نمایه مبنا اعمال کنید:

  plugins {
      ...
      id("com.google.firebase.testlab")
  }

و سپس Firebase Test Lab را با موارد زیر پیکربندی کنید:

  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
  }

نسخه ۱.۳.۱

‫۱۸ سپتامبر ۲۰۲۴

‫androidx.benchmark:benchmark-*: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)
  • Microbenchmark minification - keep subclasses of org.junit.runner.notification.RunListener in benchmark library proguard (Ic8ed5, b/354264743)
  • برای «نادیده گرفتن برش‌های غیرپایانی»، TraceSectionMetric را اصلاح کنید. قبلاً این موارد دارای مدت -۱ درنظر گرفته می‌شدند، برای نمونه درطول جمع‌بندی یا یافتن حداقل مدت. (If74b7)
  • مشکلی در FrameTimingGfxInfoMetric برطرف شد که در آن اگر فرایند ازقبل درحال اجرا نبود، شروع سنجه ازکار می‌افتاد. (I6e412)

نسخه ۱.۳.۰

‫۲۱ اوت ۲۰۲۴

‫androidx.benchmark:benchmark-*:1.3.0 منتشر شد. نسخه ۱.۳.۰ شامل این تعهدات است.

تغییرات معیار سنجش خرد از نسخه ۱.۲.۰

  • ردیابی روش‌ها به‌طور پیش‌فرض در ریز محک‌ها هنگام اجرا در اکثر دستگاه‌ها روشن است
    • ردیابی روش‌ها به‌عنوان فازی جداگانه پس‌از اندازه‌گیری‌ها اجرا می‌شود - این کار باعث می‌شود اندازه‌گیری‌های دقیق و گزارش ردیابی روش‌ها هر دو از یک اجرای محک‌زنی واحد برونداد شوند
    • ردیابی روش‌ها در برخی‌از نسخه‌های سیستم‌عامل Android و ART بر فازهای اندازه‌گیری بعدی تأثیر می‌گذارد - در این نسخه‌ها، ردیابی روش‌ها به‌طور پیش‌فرض خاموش است و هشداری در خروجی Studio چاپ می‌شود
  • معیارهای رشته اصلی و ANR
    • measureRepeatedOnMainThread برای محک‌های رشته میانای کاربر (مثلاً آن‌هایی که با میاناهای کاربر Compose/View تعامل دارند) اضافه شد تا هنگام اجرا برای چند ثانیه از ANR جلوگیری شود.
    • اگر انتظار برود که ردیابی روش از مهلت اجتناب از ANR فراتر رود، از آن صرف‌نظر می‌شود. برای غیرفعال کردن این رفتار، androidx.benchmark.profiling.skipWhenDurationRisksAnr را روی false تنظیم کنید (برای اجراهای CI توصیه نمی‌شود، زیرا خطاهای ANR می‌توانند در اجراهای طولانی CI مشکل ایجاد کنند).
  • کوچک‌سازی
    • قوانین proguard جاسازی‌شده برای بهبود محک‌زنی خرد با فعال بودن کوچک‌سازی
    • کوچک‌سازی/R8 در واحد کتابخانه به AGP نسخه ۸.۳ نیاز دارد و می‌توان آن را ازطریق android.buildTypes.release.androidTest.enableMinification در build.gradle فعال کرد
    • ‫Experimental BlackHole.consume() API برای جلوگیری از حذف کد مرده اضافه شد (If6812،‏ b/286091643)
  • سنجه‌ها
    • ویژگی آزمایشی شمارنده رویداد cpu (سنجه‌های perf_event_open، که در اکثر نسخه‌های پلاتفرم به دسترسی ریشه نیاز دارد)، دسترسی ازطریق InstrumentationArgument androidx.benchmark.cpuEventCounter.enable (می‌تواند روی true تنظیم شود)، و androidx.benchmark.cpuEventCounter.events می‌تواند مثلاً روی (Instructions,CpuCycles) تنظیم شود. این ویژگی باید در برخی‌از شبیه‌سازهای userdebug پشتیبانی شود، اما پشتیبانی در همه شبیه‌سازهای دردسترس آزمایش نشده است

تغییرات MACRObenchmark از نسخه ۱.۲.۰

  • بازنگری ردیابی روش‌ها برای محک‌های کلان.
    • اکنون گزارش ردیابی روش‌ها به مدت‌زمان measureBlock محدود شده است و اگر فرایند چندین بار شروع شود، می‌تواند چندین جلسه را ضبط کند.
    • قبلاً، ردیابی روش فقط برای StartupMode.COLD محک کار می‌کرد و برای measureBlocks که فرایند هدف را بازراه‌اندازی نمی‌کرد چیزی را ضبط نمی‌کرد
    • ردیابی‌های روش در معیارسنجی کلان اصلاح شد، بنابراین ردیابی‌های روش باید به‌طور کامل ضبط و معتبر باشند، حتی در دستگاه‌های کندتر. (I6349a،‏ b/329904950)
  • وقتی فرایند متوقف می‌شود، نمایه ART به‌درستی درطول تکرارهای warmUp تکی تخلیه می‌شود تا اندازه‌گیری‌های CompilationMode.Partial(warmup=N) دقیق‌تر باشد. (I17923)
  • پیام خطای همه‌فرستی «سایه رهاشده»
    • پیشنهادهای اشکال‌زدایی برای حذف پیام خطای پخش سایه‌زن اضافه شد
    • دو آرگومان ابزار دقیق برای لغو رفتار حذف سایه‌زن اضافه کنید تا هنگام محک‌زنی برنامه‌ها بدون ProfileInstaller 1.3، از کار سقوط‌ها جلوگیری شود:
      • ‫androidx.benchmark.dropShaders.enable=true/false : می‌تواند برای رد کردن همه حذف‌های سایه‌زن (ازجمله حذف‌های انجام‌شده در راه‌اندازی‌های StartupMode.Cold) استفاده شود، به‌ویژه هنگام محک زدن برنامه‌هایی که هنوز از profileinstaller نسخه ۱.۳ استفاده نمی‌کنند
      • ‫androidx.benchmark.dropShaders.throwOnFailure=true/false : می‌تواند برای تحمل خطاها هنگام تلاش برای حذف سایه‌زن‌ها استفاده شود، برای مثال هنگام محک‌زنی برنامه‌ها بدون profileinstaller نسخه ۱.۳ (I4f573)
  • متغیر آزمایشی MacrobenchmarkRule#measureRepeated اضافه شد که PerfettoConfig سفارشی را برای ضبط ردیابی کاملاً سفارشی Perfetto می‌گیرد. توجه داشته باشید که پیکربندی‌های نادرست ممکن است باعث شود کلاس‌های «سنجه» داخلی ناموفق باشد. (Idfd3d،‏ b/309841164،‏ b/304038384)
  • برای کاهش تداخل، قبل‌از اجرای «ریزمعیار»، کارهای dexopt پس‌زمینه را لغو کنید. (I989ed)
  • Macrobenchmark اکنون ۱ ثانیه منتظر می‌ماند تا برنامه هدف نمایه ART را پاک کند (قبلاً ۵۰۰ میلی‌ثانیه منتظر می‌ماند). (I85a50, b/316082056)
  • TraceSectionMetric overhaul
    • توجه: تغییرات TraceSectionMetric در زیر می‌تواند بر بروندادها در استفاده از CI تأثیر بگذارد و ممکن است باعث ایجاد ناپیوستگی یا قطع تجزیه شود
    • اکنون «مجموع» پیش‌فرض است، زیرا بیشتر استفاده از این سنجه برای رویدادهای تکراری است و «اولین» در این موارد داده‌ها را کنار می‌گذارد
    • تغییر کرده است تا سفارشی‌سازی بیشتری داشته باشد و حالت‌های بیشتری دراختیار قرار دهد
    • نام‌های حالت اکنون در نام برونداد سنجه (در «استودیو» و JSON) جاسازی شده‌اند
    • اکنون از برش‌های ایجادشده بااستفاده از Trace.{begin|end}AsyncSection پشتیبانی می‌کند.
  • سنجه‌ها
    • قدرت - PowerMetric.deviceSupportsHighPrecisionTracking،‏ PowerMetric.deviceBatteryHasMinimumCharge()، و PowerMetric.deviceSupportsPowerEnergy() اضافه شد
    • نام Metric.getResult به getMeasurements تغییر کرد تا با نوع برگشتی مطابقت داشته باشد
    • برچسب‌های log.w / استثنا به همه موارد عدم شناسایی راه‌اندازی اضافه شد. این کار رفتار فعلی را تغییر نمی‌دهد (بنابراین برخی‌از خطاها نشان داده می‌شوند و برخی دیگر بدون اطلاع کاربر راه‌اندازی را شناسایی نمی‌کنند)، فقط آن را قابل‌فهم‌تر می‌کند. به‌طورکلی، مواردی که Log.w() و سنجه‌های راه‌اندازی را گزارش نمی‌کنند مواردی هستند که رویدادهای غیرقاب‌تصویر در آن‌ها وجود ندارد، وقتی راه‌اندازی شناسایی می‌شود استثناهایی ایجاد می‌شود به‌جز اطلاعات زمان‌بندی قاب (از برش‌های UI/RT). (Id240f،‏ b/329145809)
    • سنجش frameCount به FrameTimingMetric اضافه شد تا به کشف سناریوهایی که در آن‌ها سنجش‌ها به‌دلیل تغییر تعداد فریم‌های تولیدشده تغییر می‌کنند (افزوده شدن پویانمایی‌های جدید، رفع مشکلات نامعتبرسازی) کمک کند. (I1e5aa)
    • توضیح داده شد که frameOverrunMs سنجه ترجیحی برای ردیابی است (درصورت دردسترس بودن در اسناد) و دلیل آن بیان شد. (I18749،‏ b/329478323)
    • مشکلی را برطرف می‌کند که در آن فریم‌های پایان‌نیافته در ابتدا و انتهای ردگیری می‌توانستند با هم جفت شوند، که به‌اشتباه به‌عنوان یک فریم بسیار طولانی گزارش می‌شد. (I39353، b/322232828)
    • بهبود خطای FrameTimingMetric وقتی قاب‌ها تولید نمی‌شوند، و همیشه پیوند خروجی برای ردیابی وقتی تجزیه سنجه ناموفق است برای کمک به تشخیص مشکل. (I956b9)
    • خرابی در FrameTimingMetric که به‌دلیل عدم تجزیه شناسه قاب، به‌ویژه در برخی دستگاه‌های سازنده اصلی محصول، رخ می‌داد برطرف شد. (Ia24bc، b/303823815، b/306235276)
    • سخت‌گیری بررسی‌ها در FrameMetrics کاهش یافت و جزئیات بیشتری به پیام‌های خطا اضافه شد. (Iadede)

تغییرات ضبط «نمایه مبنا» / افزونه Gradle از نسخه ۱.۲.۰

  • حداکثر نسخه توصیه‌شده 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)
  • نشانی وب خروجی نمایه راه‌اندازی و خط مبنا در پایان تکلیف تولید اصلاح شد. (I802e5، b/313976958)

تغییرات مهم دیگر از نسخه ۱.۲.۰

  • ضبط ردیابی
    • خطای EXITCODE 2 هنگام شروع perfetto از خطا به هشدار ثبت‌شده کاهش یافت
    • فعال کردن ردیابی AIDL به‌طور پیش‌فرض در محک‌ها(به API 28 نیاز دارد) (Ia0af2، b/341852305)
    • به‌طور پیش‌فرض ردیابی برچسب حامل را در محک‌ها فعال کنید. این کار، برای مثال، نقاط ردیابی wakelock را ضبط می‌کند. (Icfe44، b/286551983)
    • افزایش زمان اتمام مهلت شروع ضبط ردیابی برای جلوگیری از خرابی هنگام شروع ردیابی در دستگاه‌های کندتر (I98841، b/329145808)
    • PerfettoTraceProcessor.Session.queryMetrics میانای برنامه‌سازی کاربردی عمومی با انواع JSON،‏ textproto، و proto binary (رمزگشایی‌نشده) اضافه شد. این‌ها به شما امکان می‌دهند سنجه‌های ساخته‌شده در TraceProcessor را پُرسمان کنید (I54d7f، b/304038382)
    • برای کاهش خطر ازدست رفتن داده‌ها در ابتدای ردیابی، شروع مسدودسازی را در گزارش ردیابی Perfetto فعال کنید. فقط در میانای برنامه‌سازی کاربردی ۳۳ و بالاتر پشتیبانی می‌شود. (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)
    • Throw when filenames are longer than 200 chars to avoid unclear crashes when writing or post-processing files. (I4a5ab)

نسخه 1.3.0-rc01

‫۷ اوت ۲۰۲۴

‫androidx.benchmark:benchmark-*:1.3.0-rc01 منتشر شد. نسخه 1.3.0-rc01 شامل این تعهدات است.

رفع اشکال‌ها

  • رفع مشکل androidx.benchmark.cpuEventCounter که مقادیر معیوب برای رویدادهای غیردستوری تولید می‌کند (I7386a، b/286306579)
  • ‫resumeTiming/runWithTimingDisabled را اصلاح کنید تا ترتیب اولویت سنجه رعایت شود و تأثیر توقف/ازسرگیری سنجه با اولویت پایین بر نتایج سنجه با اولویت بالاتر به‌طور قابل‌توجهی کاهش یابد. برای مثال، اگر از شمارنده‌های cpu perf ازطریق آرگومان ابزار دقیق cpuEventCounter.enable استفاده شود، دیگر با وقوع توقف/ازسرگیری، timeNs به‌طور قابل‌توجهی کاهش نمی‌یابد. (I39c2e، b/286306579، b/307445225)
  • با انتقال تبدیل نمونه‌گیری پشته به خارج از رشته اصلی، احتمال اینکه نمونه‌گیری پشته باعث شود measureRepeatedOnMainThread به مهلت زمانی سخت رشته اصلی برسد کاهش یافته است. (I487a8،‏ b/342237318)
  • ازآنجایی‌که هنگام استفاده از R8 با AGP نسخه ۷.۳ یا جدیدتر (برای نمونه، R8 نسخه ۳.۳) و برای همه ساخت‌ها هنگام استفاده از AGP نسخه ۸.۱ یا جدیدتر (برای نمونه، D8 نسخه ۸.۱)، نمای کلی دستی دسترسی به میاناهای برنامه‌سازی کاربردی پلاتفرم جدید به‌طور خودکار ازطریق مدل‌سازی میانای برنامه‌سازی کاربردی انجام می‌شود، نمای کلی دستی دسترسی به میاناهای برنامه‌سازی کاربردی پلاتفرم جدید برداشته شد. به کارخواهانی که از AGP استفاده نمی‌کنند توصیه می‌شود به D8 نسخه ۸.۱ یا بالاتر به‌روزرسانی کنند. برای جزئیات بیشتر، این مقاله را ببینید. (I9496c، b/345472586)
  • بررسی نسخه agp برای ارسال نام بسته به‌عنوان آرگومان instr اضافه شد. قبل‌از AGP 8.4.0، نام بسته برنامه هدف را نمی‌توان ازطریق آرگومان‌های ابزار دقیق به برنامه ابزار دقیق ارسال کرد. (0c72a3f)

نسخه 1.3.0-beta02

‫۱۰ ژوئیه ۲۰۲۴

‫androidx.benchmark:benchmark-*:1.3.0-beta02 منتشر شد. نسخه 1.3.0-beta02 شامل این تعهدها است.

رفع اشکال‌ها

  • هنگام شروع Perfetto، کد خروج 2 را به‌طور مناسب مدیریت کنید تا هشدار ثبت شود، اما ادامه دهید.

نسخه 1.3.0-beta01

۱۲ ژوئن ۲۰۲۴

‫androidx.benchmark:benchmark-*:1.3.0-beta01 منتشر شد. نسخه 1.3.0-beta01 شامل این تعهدات است.

تغییرات میانای برنامه‌سازی کاربردی

  • نام MethodTracing.affectsMeasurementOnThisDevice برای سازگاری به AFFECTS_MEASUREMENT_ON_THIS_DEVICE تغییر کرد. (I1bdfa)
  • ‫BlackHole.consume() api آزمایشی اضافه شد تا از حذف کد مرده در ریزسنجش‌ها جلوگیری شود. (If6812،‏ b/286091643)
  • اکنون «ریزمعیار» به‌درستی استثنا پرتاب می‌کند تا از تداخل ردیابی روش با اندازه‌گیری‌ها جلوگیری کند. این اتفاق در برخی‌از دستگاه‌ها زمانی رخ می‌دهد که ردیابی روش به‌اجبار روشن باشد (ازطریق آرگومان‌های ابزار دقیق یا MicrobenchmarkConfig)، و اگر پس‌از ردیابی روش، اندازه‌گیری انجام شود. دستگاه‌های تحت‌تأثیر این تداخل از API 26-30 یا نسخه‌های خاصی از واحد اصلی ART که تحت‌تأثیر این تداخل قرار گرفته‌اند استفاده می‌کنند و می‌توانند در زمان اجرا ازطریق ProfilerConfig.MethodTracing.affectsMeasurementOnThisDevice شناسایی شوند. (Iafb92، b/303660864)

رفع اشکال‌ها

  • حداکثر نسخه agp توصیه‌شده به 9.0.0-alpha01 ارتقا یافت. (I5bbb0)
  • حالت گردآوری به زمینه محک اضافه شد (If5612، b/325512900)
  • فعال کردن ردیابی AIDL به‌طور پیش‌فرض (به میانای برنامه‌سازی کاربردی ۲۸ نیاز دارد) (Ia0af2، b/341852305)
  • اطلاعات بیشتری در بافت معیار در برونداد JSON اضافه شد:
    • context.artMainlineVersion - نسخه عدد صحیح پودمان خط اصلی Art (اگر در دستگاه وجود داشته باشد، درغیراین‌صورت -۱)
    • ‫context.build.id - مساوی با android.os.Build.ID است
    • ‫context.build.version.codename - برابر با android.os.Build.VERSION.CODENAME
    • context.build.version.abbreviatedCodename - corresponds to first letter of pre-release codename (even on release builds) (Ie5020)
  • Fixes StackSampling to respect androidx.benchmark.profiling.sampleDurationSeconds (Ib1d53)
  • Change macro->common dependency to be api(), so it's easier to use e.g. PerfettoTrace and PerfettoConfig. (Icdae3، b/341851833)
  • مطمئن شوید که تکالیف mergeArtProfile و mergeStartupProfile همیشه منتظر تولید نمایه‌ پایه هستند. (I623d6، b/343086054)
  • هنگام تصمیم‌گیری درباره اینکه آیا متغیر باید فعال شود، وضعیت فعال بودن متغیر را درنظر بگیرید. (I5d19e، b/343249144)
  • زمان اتمام شروع پیش‌فرض برای پردازنده ردیابی perfetto افزایش یافت. (I87e8c، b/329145808)

نسخه 1.3.0-alpha05

‫۱۴ مه ۲۰۲۴

‫androidx.benchmark:benchmark-*:1.3.0-alpha05 منتشر شد. نسخه 1.3.0-alpha05 حاوی این ارسال‌ها است.

رفع اشکال‌ها

  • وقتی سنجه کلان‌معیار مقادیر صفر را برای همه تکرارها برمی‌گرداند، استثنای واضح‌تری ایجاد می‌شود (Iab58f، b/314931695)
  • قوانین راه‌حل اضافی به قوانین proguard microbench اضافه شد، ازجمله پشتیبانی از قوانین شنونده و سایر هشدارها / خطاهای مشاهده‌شده. (I14d8f، b/329126308، b/339085669)
  • ردیابی روش به‌عنوان مرحله‌ای جداگانه درطول «ریزمعیار» اجرا می‌شود و دیگر بر اندازه‌گیری‌ها تأثیر نمی‌گذارد. (If9a50، b/285912360، b/336588271)
  • پیشنهادهای اشکال‌زدایی اضافی به پیام خطای همه‌فرستی سایه‌زن حذف‌شده اضافه شد. (I5efa6،‏ b/325502725)

نسخه 1.3.0-alpha04

‫۱ مه ۲۰۲۴

‫androidx.benchmark:benchmark-*:1.3.0-alpha04 منتشر شد. نسخه 1.3.0-alpha04 شامل این تغییرات است.

تغییرات میانای برنامه‌سازی کاربردی

  • متغیر آزمایشی MacrobenchmarkRule#measureRepeated اضافه شد که PerfettoConfig سفارشی را برای ضبط ردیابی کاملاً سفارشی‌سازی‌شده Perfetto می‌گیرد. توجه داشته باشید که پیکربندی‌های نادرست ممکن است باعث ازکارافتادن کلاس‌های «سنجه» داخلی شود. (Idfd3d،‏ b/309841164،‏ b/304038384)
  • Rename PowerMetric.deviceSupportsPowerEnergy to PowerMetric.deviceSupportsHighPrecisionTracking for clarity (I5b82f)
  • PowerMetric.deviceBatteryHasMinimumCharge() و PowerMetric.deviceSupportsPowerEnergy() اضافه شد تا امکان تغییر یا رد شدن از محک‌ها براساس قابلیت اندازه‌گیری توان دستگاه فراهم شود. (I6a591, b/322121218)

رفع اشکال‌ها

  • مقایسه با نمایه مبنای قبلی (I824c8، b/269484510) اضافه شد
  • Added DSL to disable warnings (Ic4deb, b/331237001)
  • تغییر استثنا به گزارش اطلاعات هنگام غیرفعال بودن متغیرهای محک (I8a517، b/332772491)
  • Make it simpler to capture method traces for a Macrobenchmark is scoped to the duration of the actual measureBlock(). قبلاً، در راه‌اندازی فرایند هدف شروع می‌شد و فقط از شروع سرد پشتیبانی می‌کرد (Iee85a، b/300651094)
  • جلوگیری از خراب شدن وقتی پردازنده ردیابی perfetto کند شروع می‌شود (I98841، b/329145808)

نسخه 1.3.0-alpha03

‫۱۷ آوریل ۲۰۲۴

‫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 محک اضافه شد. این کار، برای مثال، نقاط ردیابی wakelock را ضبط می‌کند. (Icfe44، b/286551983)
  • آرگومان inst androidx.benchmark.profiling.skipWhenDurationRisksAnr اضافه شد، برای جلوگیری از رد کردن ردهای روش وقتی مدت موردانتظار ممکن است باعث ANR شود، می‌توان آن را روی نادرست تنظیم کرد - اکیداً توصیه می‌شود در اجراهای CI از آن استفاده شود.
  • آرگومان آزمایشی inst androidx.benchmark.profiling.perfCompare.enable اضافه شد، برای اجرای زمان‌بندی مقایسه بین مراحل اندازه‌گیری و نمایه‌سازی، این را روی درست تنظیم کنید. برای مثال، در ارزیابی سربار ردیابی روش مفید است. ‫(I61fb4،‏ b/329146942)

تغییرات میانای برنامه‌سازی کاربردی

  • TraceSectionMetric.Mode به کلاس مهروموم‌شده تغییر کرد تا امکان گسترش در آینده بدون شکستن دستورات exhaustive when فراهم شود (I71f7b)
  • ‫TraceSectionMetric.Mode.Average و .Count اضافه شد و ترتیب آرگومان‌ها تغییر کرد تا آرگومان رایج‌تر (حالت) در فهرست آرگومان‌ها زودتر قرار گیرد و نیاز به مشخص کردن نام پارامتر کاهش یابد. (Ibf0b0،‏ b/315830077،‏ b/322167531)
  • نام Metric.getResult به getMeasurements تغییر کرد تا با نوع پاسخ مطابقت داشته باشد (I42595)

رفع اشکال‌ها

  • Fix to ensure benchmarks use generated baseline profiles when automaticGenerationDuringBuild is off (Ic144f, b/333024280)
  • اصلاح لغو ویژگی افزونه gradle BaselineProfile برای فعال کردن تولید نمایه مبنا و محک‌زنی هنگام سفارشی‌سازی نوع ساخت nonMinified یا محک. (Ib8f05، b/324837887)
  • ردیابی‌های روش در ماکروبنچ‌مارک به‌طور کامل تخلیه می‌شوند تا ردیابی‌های روش حتی در دستگاه‌های کندتر به‌طور کامل ضبط و معتبر باشند. (I6349a،‏ b/329904950)
  • فعال کردن شروع مسدودسازی در ثبت ردیابی Perfetto برای کاهش خطر ازدست رفتن داده‌ها در شروع ردیابی. فقط در API 33 و نسخه‌های بالاتر پشتیبانی می‌شود. (Ie6e41، b/310760059)
  • هشداری اضافه شد برای زمانی که از «هماهنگ‌کننده آزمایش Android» در پیمانه‌های محک استفاده می‌شود، زیرا این کار باعث می‌شود فایل‌های JSON خروجی هر پیمانه به‌طور مکرر رونویسی شوند. (Ia1af6، b/286899049)
  • Force ',' (comma) thousands separators for consistency in Studio output, ignoring device locale (I3e921, b/313496656)
  • ‫TraceSectionMetric اکنون از برش‌های ساخته‌شده بااستفاده از Trace.{begin|end}AsyncSection پشتیبانی می‌کند. (I91b32, b/300434906)
  • برچسب‌های log.w / exception به همه خطاهای تشخیص راه‌اندازی اضافه شد. این کار رفتار فعلی را تغییر نمی‌دهد (بنابراین برخی‌از خطاها نشان داده می‌شوند و برخی دیگر بدون اطلاع کاربر راه‌اندازی را شناسایی نمی‌کنند)، فقط آن را قابل‌فهم‌تر می‌کند. به‌طورکلی، مواردی که Log.w() و سنجه‌های راه‌اندازی را گزارش نمی‌کنند مواردی هستند که رویدادهای غیرقاب‌تصویر در آن‌ها وجود ندارد، وقتی راه‌اندازی شناسایی می‌شود استثناهایی ایجاد می‌شود به‌جز اطلاعات زمان‌بندی قاب (از برش‌های UI/RT). (Id240f، b/329145809)
  • برای کاهش تداخل، کارهای dexopt پس‌زمینه را قبل‌از اجرای Macrobenchmark لغو کنید. (I989ed)
  • ‫frameCount اندازه‌گیری به FrameTimingMetric اضافه شد تا به شناسایی سناریوهایی که در آن‌ها اندازه‌گیری‌ها به‌دلیل تغییر تعداد قاب‌های تولیدشده تغییر می‌کند کمک کند (پویانمایی‌های جدید اضافه شده است، مشکلات نامعتبرسازی برطرف شده است). (I1e5aa)
  • توضیح داده شد که frameOverrunMs سنجه ترجیحی برای ردیابی است (درصورت دردسترس بودن در اسناد) و دلیل آن نیز بیان شد. (I18749،‏ b/329478323)

نسخه 1.3.0-alpha02

‫۲۰ مارس ۲۰۲۴

‫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
    }
    

رفع اشکال‌ها

  • هشدار ردیابی روش را اصلاح می‌کند تا در خط جداگانه‌ای از برونداد میکرو محک قرار گیرد. (I0455c،‏ b/328308833)

نسخه 1.3.0-alpha01

۲۱ فوریه ۲۰۲۴

‫androidx.benchmark:benchmark-*:1.3.0-alpha01 منتشر شد. نسخه 1.3.0-alpha01 حاوی این تعهدات است.

تغییرات میانای برنامه‌سازی کاربردی

  • نام پارامترهای بولی MicrobenchmarkConfig تغییر کرد تا از کلمه غیرضروری «باید» (Ia8f00، b/303387299) استفاده نشود
  • BenchmarkRule.measureRepeatedOnMainThread اضافه شد تا محک‌های رشته اصلی (مثلاً محک‌هایی که با «نماها» یا «میاناهای کاربر Compose» سروکار دارند) بتوانند از راه‌اندازی ANR جلوگیری کنند، به‌ویژه درطول مجموعه‌های بزرگ در CI. (I5c86d)
  • FrameTimingGfxInfoMetric اضافه شد، پیاده‌سازی جایگزین آزمایشی FrameTimingMetric با اندازه‌گیری‌هایی که مستقیماً از پلاتفرم می‌آیند، به‌جای اینکه از ردیابی Perfetto استخراج شوند. (I457cb،‏ b/322232828)
  • افزودن توانایی تخلیه نمایه ART درطول تکرارهای warmUp جداگانه. (I17923)
  • چندین تغییر در TraceSectionMetric API:
    • افزودن Mode.Min، Mode.Max
    • افزودن آرگومان برچسب برای لغو نام بخش به‌عنوان برچسب سنجه
    • نام حالت به خروجی اضافه شد تا معنی سنجه واضح‌تر شود
    • Changed default to sum, as most usage of this metric is for repeated events Be aware of this changes in CI usage, as it may create discontinuities or break parsing. (Ic1e82، b/301892382، b/301955938)

رفع اشکال‌ها

  • بهبود پیام خطا در افزونه gradle نمایه مبنا وقتی دستگاه مدیریت‌شده مشخص‌شده وجود ندارد (Idea2b، b/313803289)
  • رفع مشکل افزودن نمایه‌های پایه کتابخانه به AAR قبل‌از AGP نسخه 8.3.0-alpha15 (I1d2af، b/313992099)
  • نشانی وب برونداد نمایه راه‌اندازی و مبنای ثابت در انتهای کار تولید اصلاح شد (I802e5، b/313976958)
  • مهلت‌های زمانی منبع داده برای تلاش جهت رفع java.lang.IllegalStateException: Failed to stop [ProcessPid(processName=perfetto, pid=...)] تنظیم شد (I8dc7d، b/323601788)
  • دو آرگومان ابزار دقیق برای لغو رفتار حذف سایه‌زن اضافه کنید تا هنگام محک‌زنی برنامه‌ها بدون ProfileInstaller 1.3، از کار سقوط‌ها جلوگیری شود:
    • ‫androidx.benchmark.dropShaders.enable=true/false : می‌تواند برای رد شدن از همه حذف‌های سایه‌زن (ازجمله حذف‌هایی که در راه‌اندازی‌های StartupMode.Cold انجام می‌شود) استفاده شود، به‌ویژه هنگام محک‌زنی برنامه‌هایی که هنوز از profileinstaller 1.3 استفاده نمی‌کنند
    • androidx.benchmark.dropShaders.throwOnFailure=true/false : می‌تواند برای تحمل خرابی‌ها هنگام تلاش برای رها کردن سایه‌زن‌ها استفاده شود، برای مثال هنگام محک‌زنی برنامه‌ها بدون profileinstaller 1.3 (I4f573)
  • رد شدن از گزارش ردیابی روش‌ها در رشته میانای کاربر وقتی انتظار می‌رود بیش‌از چند ثانیه طول بکشد، و پاکسازی گزارش ردیابی روش‌ها هنگام پرتاب کردن. (I6e768)
  • وقتی نام فایل‌ها بیشتر از ۲۰۰ نویسه است، استثنا ایجاد کنید تا هنگام نوشتن یا پس‌پردازش فایل‌ها با خرابی‌های نامشخص مواجه نشوید. (I4a5ab)
  • مشکلی را برطرف می‌کند که در آن قاب‌های بدون پایان در ابتدا و انتهای ردیابی می‌توانستند با هم جفت شوند، که به‌اشتباه به‌عنوان یک قاب بسیار طولانی گزارش می‌شد. (I39353، b/322232828)
  • هنگام بازنصب کردن بسته در میانای برنامه‌سازی کاربردی ۳۰-۳۳، از --skip verification در میانای برنامه‌سازی کاربردی ۳۰+ استفاده کنید تا نمایه‌های ART در نسخه‌های کاربر پاک شود. این کار به دور زدن هشدارهای «سپر ایمنی Play» که باعث خرابی در برخی‌از انواع دستگاه‌ها می‌شود کمک می‌کند. (Ic9e36)
  • از am force-stop برای بستن برنامه‌ها وقتی برنامه سیستم نیست (مثل «واسط کاربر سیستم» یا «راه‌انداز») استفاده کنید. (I5e028)
  • ‫Macrobenchmark اکنون 1 second منتظر می‌ماند تا برنامه هدف نمایه ART را پاک کند (قبلاً 500 ms منتظر می‌ماند). (I85a50،‏ b/316082056)
  • خطای FrameTimingMetric را در مواقعی که قاب تولید نمی‌شود بهبود دهید و همیشه پیوند را برای ردیابی درصورت تجزیه ناموفق سنجه برونداد کنید تا به تشخیص مشکل کمک کند. (I956b9)
  • خرابی در FrameTimingMetric که به‌دلیل تجزیه نشدن شناسه قاب رخ می‌داد، به‌ویژه در برخی‌از دستگاه‌های سازنده اصلی محصول، رفع شد. (Ia24bc، b/303823815، b/306235276)
  • سخت‌گیری بررسی‌ها در FrameMetrics کاهش یافت و جزئیات بیشتری به پیام‌های خطا اضافه شد. (Iadede)

نسخه ۱.۲

نسخه ۱.۲.۴

‫۱۷ آوریل ۲۰۲۴

‫androidx.benchmark:benchmark-*:1.2.4 منتشر شد. نسخه ۱.۲.۴ شامل این تعهدات است.

رفع اشکال‌ها

  • srcset نمایه مبنا را که در انواع محک تنظیم نشده است اصلاح می‌کند. همچنین automaticGenerationDuringBuild را در کتابخانه‌هایی که باعث وابستگی دایره‌ای می‌شوند برطرف می‌کند. (I28ab7، b/333024280)
  • از am force-stop برای بستن برنامه‌ها وقتی برنامه سیستم نیست (مثل «واسط کاربر سیستم» یا «راه‌انداز») استفاده کنید. این مشکل خرابی محک‌های StartupMode.COLD به‌دلیل «بسته $package نباید قبل‌از شروع سرد اجرا شود!» را برطرف می‌کند، زیرا توقف فرایند به‌طور کامل موفقیت‌آمیز نبوده است. (I5e028)

نسخه ۱.۲.۳

‫۲۴ ژانویه ۲۰۲۴

‫androidx.benchmark:benchmark-*:1.2.3 منتشر شد. نسخه ۱.۲.۳ حاوی این ثبت‌ها است.

رفع اشکال‌ها

  • استثنا از «افزایه Gradle نمایه مبنا» وقتی نسخه AGP‏ ۸.۳.۰ یا بالاتر باشد برداشته شد.
  • اصلاحیه‌ای برای گنجاندن نمایه‌های مبنای کتابخانه در AAR قبل‌از AGP 8.3.0-alpha15.

نسخه ۱.۲.۲

‫۱ دسامبر ۲۰۲۳

‫androidx.benchmark:benchmark-*:1.2.2 منتشر شد. نسخه ۱.۲.۲ حاوی این تعهدات است.

نمایه‌های مبنا

  • گزارش‌های اجرا مسیر فایل برونداد نمایه پایه را به‌عنوان نشانی وب فایل محلی نشان می‌دهد (aosp/2843918، aosp/2853665، b/313976958)

نسخه ۱.۲.۱

۱۵ نوامبر ۲۰۲۳

‫androidx.benchmark:benchmark-*:1.2.1 منتشر شد. نسخه ۱.۲.۱ حاوی این تعهدات است.

ویژگی‌های جدید

  • Improved error message when user disables test variants (b/307478189)
  • دارایی‌هایی برای پشتیبانی از یکپارچه‌سازی اجرای آزمایشی AS اضافه شد (b/309805233)، (b/309116324)

نسخه ۱.۲.۰

۱۸ اکتبر ۲۰۲۳

‫androidx.benchmark:benchmark-*:1.2.0 منتشر شد. نسخه ۱.۲.۰ حاوی این ثبت‌ها است.

تغییرات مهم از نسخه ۱.۱.۰

نمایه‌های مبنا

  • افزایه Gradle نمایه پایه جدید به‌طور خودکار نمایه‌های پایه را در گردش کار ساخت و آزمایش شما ضبط و اضافه می‌کند.
  • BaselineProfileRule.collect اکنون پایدار است، نسخه‌ای ساده و کارآمد از میانای برنامه‌سازی کاربردی آزمایشی قبلی BaselineProfileRule.collectBaselineProfile
    • فقط packageName را مشخص کنید و برنامه‌تان را هدایت کنید
  • برای کتابخانه‌هایی که نمایه مبنا تولید می‌کنند، اکنون می‌توانید قوانین تولیدشده را در کد (آرگومان BaselineProfileRule.collect) یا حتی ساده‌تر در افزونه gradle فیلتر کنید
  • تصحیح‌ها
    • جمع‌آوری نمایه خط مبنا در Android U+‎ (Id1392، b/277645214) اصلاح شد

Macrobenchmark

  • مجموعه
    • Macrobenchmark اکنون وضعیت کامپایل را برای هر کامپایل به‌درستی و به‌طور کامل بازنشانی می‌کند - این کار مستلزم بازنصب کردن APK قبل‌از Android 14 است، بنابراین اگر می‌خواهید وضعیت (مانند ورود به سیستم کاربر) را در آنچه اندازه‌گیری می‌شود حفظ کنید، قویاً توصیه می‌شود که محک‌زنی را در Android 14 و نسخه‌های بالاتر انجام دهید.
    • همچنین می‌توانید با کنترل جداگانه کامپایل برنامه و رد شدن از کامپایل با CompilationMode.Ignore() یا آرگومان ابزار دقیق، این مشکل را برطرف کنید
  • متغیرهای مستقل ابزارسازی

    • پشتیبانی از آرگومان ابزار دقیق androidx.benchmark.dryRunMode.enable (که قبلاً در ریز محک‌افزار دردسترس بود) برای اجرای سریع‌تر اعتبارسنجی (مثلاً هنگام ایجاد محک‌افزار یا در پیش‌ارسال)
    • پشتیبانی از androidx.benchmark.profiling.mode=StackSampling و MethodTracing.
    • androidx.benchmark.enabledRules اضافه شد تا امکان فیلتر کردن زمان اجرا در نمایه پایه دربرابر آزمایش‌های قانون سنجش کلان فراهم شود
    • متغیر مستقل androidx.benchmark.perfettoSdkTracing.enable برای فعال کردن ردیابی با tracing-perfetto اضافه شد، برای مثال، ردیابی بازترکیب «ترکیب‌بندی». توجه داشته باشید که وقتی با StartupMode.COLD استفاده می‌شود، زمان‌بندی به‌طور قابل‌توجهی تحت تأثیر قرار می‌گیرد زیرا کتابخانه ردیابی درطول راه‌اندازی برنامه بار می‌شود و فعال می‌شود.
  • الزامات

    • Macrobenchmark اکنون به ProfileInstaller نسخه ۱.۳.۰ یا بالاتر در برنامه هدف نیاز دارد تا بتواند ضبط / بازنشانی نمایه و پاک کردن حافظه پنهان سایه‌زن را فعال کند.
  • Metric APIs آزمایشی جدید

    • TraceSectionMetric آزمایشی اضافه شد که امکان استخراج زمان‌بندی ساده از بلوک‌های trace("") {} در برنامه شما یا TraceMetric را برای بهره‌برداری از قابلیت کامل پُرسمان Perfetto TraceProcessor فراهم می‌کند.
    • PowerMetric آزمایشی برای ضبط اطلاعات مصرف برق اضافه شد
    • MemoryCountersMetric آزمایشی برای شمارش خطاهای صفحه اضافه شد
    • PerfettoTraceProcessor API آزمایشی اضافه شد که به‌طور داخلی برای استخراج سنجه‌ها از ردگیری‌های سیستم (یا ردگیری‌های Perfetto) استفاده می‌شود
  • تصحیحات

    • خرابی‌های هنگام نصب یا استخراج نمایه‌ها از برنامه‌ای که از چند APK نصب شده است (مثلاً از دسته برنامه) برطرف شد.
    • رفع مشکل FrameTimingMetric که قاب‌های دارای شناسه‌های قاب ناسازگار را نادیده می‌گرفت (معمولاً قاب‌های حین موج‌های API 31+) (I747d2، b/279088460)
    • خطاهای تجزیه در ردیابی‌های > ۶۴ مگابایت برطرف شد (Ief831، b/269949822)
    • خطاهای شفاف‌سازی‌شده هنگام پیکربندی نادرست تصویر سیستم‌عامل دستگاه (به‌ویژه شبیه‌ساز) برای ردیابی یا کامپایل کردن
    • برای دستگاه‌های بدون باتری (کوچک و بزرگ)، بررسی سطح باتری رد شود
    • برونداد فایل بهبودیافته، با خطاهای واضح‌تر برای دایرکتوری‌های برونداد نامعتبر، و پیش‌فرض‌های ایمن‌تر
    • پایداری StartupMode.COLD با حذف مداوم حافظه نهان سایه‌زن (که ازطریق MacrobenchmarkScope.dropShaderCache نیز نمایش داده می‌شود) بهبود یافته است
    • بازگشت به حالت تکیه‌گاهی ثابت برای startActivityAndWait.

Microbenchmark

  • ویژگی‌ها
    • نمایه‌سازی به مرحله‌ای جداگانه، پس‌از سایر سنجه‌ها، منتقل شد تا یک اجرای آزمایشی بتواند هم زمان‌بندی دقیق و هم نتایج نمایه‌سازی را نمایش دهد.
  • میاناهای برنامه‌سازی کاربردی آزمایشی
    • ‫API آزمایشی MicrobenchmarkConfig برای تعریف سنجه‌های سفارشی و پیکربندی ردیابی و نمایه‌سازی اضافه شد. می‌تواند برای ضبط کردن گزارش ردیابی روش‌ها یا ضبط کردن نقاط ردیابی استفاده شود (اما از سربار ردیابی آگاه باشید).
    • میاناهای برنامه‌سازی کاربردی آزمایشی برای کنترل BenchmarkState به‌طور جداگانه از BenchmarkRule، بدون JUnit اضافه شد
    • رکورد آزمایشی PerfettoTrace اضافه شد تا امکان ضبط ردهای Perfetto با پیکربندی سفارشی و جدا از میاناهای برنامه‌سازی کاربردی محک فراهم شود.
  • تصحیح
    • فضاهای خالی پیشرو مفقودشده در برونداد محک «استودیو Android» را دور بزنید.
    • مشکلی که باعث می‌شد هشدارها در خروجی محک Android Studio چاپ نشود برطرف شد.
    • ازکارافتادگی SampledProfiling در Android 13 (میانای برنامه‌سازی کاربردی ۳۳) و بالاتر برطرف شد.
    • عملکرد dryRunMode با رد شدن از IsolationActivity و ردیابی Perfetto به‌طور قابل‌توجهی بهبود یافته است (حالت اجرای آزمایشی تا ۱۰ برابر سریع‌تر در نسخه‌های قدیمی‌تر سیستم‌عامل).

نسخه 1.2.0-rc02

‫۶ اکتبر ۲۰۲۳

‫androidx.benchmark:benchmark-*:1.2.0-rc02 منتشر شد. نسخه 1.2.0-rc02 حاوی این commitها است.

رفع اشکال‌ها

  • برطرف کردن برونداد فایل «محک‌زنی» تا دیگر کپی کردن فایل BaselineProfile افزایه را متوقف نکند. فایل‌ها تولید و از دستگاه کپی شدند، اما نام آن‌ها تغییر کرده بود به‌طوری‌که افزونه gradle آن‌ها را نمی‌دید. (I8dbcc، b/303034735، b/296453339)
  • پیام‌های خطای بار کردن tracing-perfetto هنگام تزریق از واحد معیار کلان به برنامه هدف شفاف‌سازی شد.

نسخه 1.2.0-rc01

‫۲۰ سپتامبر ۲۰۲۳

‫androidx.benchmark:benchmark-*:1.2.0-rc01 منتشر شد. نسخه 1.2.0-rc01 حاوی این commit-ها است.

رفع اشکال‌ها

  • اکنون وقتی ردیابی Perfetto SDK در «سنجش عملکرد» مقداردهی اولیه نمی‌شود، استثنایی (با دستورالعمل‌های اصلاح) ایجاد می‌شود. (I6c878، b/286228781)
  • Fix OOM crash when converting ART method trace -> perfetto format. (I106bd،‏ b/296905344)
  • (Macrobenchmark) برچسب ردیابی روش هنگام پیوند دادن در خروجی آزمایش «استودیو» شفاف‌سازی شد و نام فایل‌های ردیابی روش به‌گونه‌ای اصلاح شد که در دستگاه/میزبان منحصربه‌فرد باشد تا هنگام اجرای بیش‌از یک محک، رونویسی نشود. (I08e65, b/285912360)
  • تضمین می‌کند که دستگاه هنگام ضبط نمایه پایه بیدار باشد. (I503fc)

نسخه 1.2.0-beta05

‫۳۰ اوت ۲۰۲۳

‫androidx.benchmark:benchmark-*:1.2.0-beta05 منتشر شد. نسخه 1.2.0-beta05 حاوی این ارسال‌ها است.

ویژگی‌های جدید

  • «افزایه Gradle نمایه پایه» اکنون از «افزایه Android Gradle» نسخه ۸.۳ پشتیبانی می‌کند. (aosp/2715214)

نسخه 1.2.0-beta04

۲۳ اوت ۲۰۲۳

‫androidx.benchmark:benchmark-*:1.2.0-beta04 منتشر شد. نسخه 1.2.0-beta04 حاوی این تعهدات است.

ویژگی‌های جدید

  • افزایه Baseline Profiles Gradle اکنون از «افزایه Android Gradle» نسخه ۸.۳ پشتیبانی می‌کند. (aosp/2715214)

رفع اشکال‌ها

  • با پاک‌سازی بیشتر نام فایل‌های خروجی و اجتناب از «=» و «:» در نام فایل‌های خروجی، خرابی‌های نوشتن / انتقال و کشیدن فایل‌ها (به‌ویژه فایل‌های مربوط به آزمایش‌های پارامتری‌شده) را برطرف کنید. (I759d8)

نسخه 1.2.0-beta03

۹ اوت ۲۰۲۳

‫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)
  • خطای NOT-PROFILEABLE در macrobenchmark در میانای برنامه‌سازی کاربردی ۳۱ به بالا برداشته شد و بررسی قابلیت نمایه‌سازی در دستگاه‌های ریشه‌دار eng/userdebug رد شد. (I2abac، b/291722507)
  • هنگام استفاده از «بهینه‌سازی‌های چیدمان Dex»، قوانین نمایه راه‌اندازی نیز اکنون به‌عنوان قوانین نمایه پایه درنظر گرفته می‌شوند. (aosp/2684246، b/293889189)

نسخه 1.2.0-beta02

۲۶ ژوئیه ۲۰۲۳

‫androidx.benchmark:benchmark-*:1.2.0-beta02 منتشر شد. نسخه 1.2.0-beta02 شامل این commit-ها است.

تغییرات میانای برنامه‌سازی کاربردی

  • میاناهای برنامه‌سازی کاربردی آزمایشی برای پیکربندی و سنجه‌های سفارشی microbench (مثلاً نمایه‌ساز و ردیابی) اضافه شد. (I86101، b/291820856)

رفع اشکال‌ها

  • گزارش خطا در macrobench وقتی سیستم‌عامل برای ردیابی پیکربندی اشتباهی دارد، همان‌طور که اخیراً در شبیه‌سازهای API 26/28 ARM64 برطرف شد. (I0a328، b/282191686)
  • جزئیات به خطای بازنشانی کامپایل اضافه شد تا به‌روزرسانی شبیه‌ساز پیشنهاد شود، زیرا برخی‌از شبیه‌سازها اخیراً این مشکل را برطرف کرده‌اند. (I8c815، b/282191686)
  • androidx.test.uiautomator:uiautomator:2.2.0 را به‌جای وابستگی implementation، به وابستگی api تبدیل کنید. (I1981e)

نسخه 1.2.0-beta01

‫۱۸ ژوئیه ۲۰۲۳

‫androidx.benchmark:benchmark-*:1.2.0-beta01 منتشر شد. نسخه 1.2.0-beta01 شامل این commit-ها است.

رفع اشکال‌ها

  • رفع مشکل سرکوب شدن گاه‌به‌گاه هشدارهای برونداد «سنجش عملکرد» در «استودیو»، و راهکار دور زدن فضاهای خالی پیشرو در برونداد «سنجش عملکرد» که در «استودیو» نشان داده نمی‌شود (Ia61d0، b/227205461، b/286306579، b/285912360)
  • نظر FrameTimingMetric اصلاح شد. نام زیرمتریک frameDurationCpuMs است. (Ib097f، b/288830934).

نسخه 1.2.0-alpha16

۲۱ ژوئن ۲۰۲۳

‫androidx.benchmark:benchmark-*:1.2.0-alpha16 منتشر شد. نسخه 1.2.0-alpha16 شامل این تعهدات است.

تغییرات میانای برنامه‌سازی کاربردی

  • نام میانای برنامه‌سازی کاربردی BaselineProfileRule.collectBaselineProfile() به BaselineProfileRule.collect() تغییر کرده است. (I4b665)

رفع اشکال‌ها

  • پشتیبانی Macrobenchmark برای androidx.benchmark.profiling.mode = MethodTracing. (I7ad37، b/285912360)
  • نمایه‌سازی ریزمعیار به مرحله‌ای جداگانه منتقل شد، بنابراین به‌صورت متوالی پس‌از اندازه‌گیری انجام می‌شود، نه اینکه جایگزین آن شود. اکنون بخش‌های ردیابی MethodTracing نیز در ردیابی Perfetto ضبط‌شده گنجانده شده است (درصورت وجود). (I9f657, b/285014599)
  • اندازه‌گیری شمارش را به TraceSectionMetric با Mode.Sum اضافه کنید. (Ic121a، b/264398606)

نسخه 1.2.0-alpha15

۷ ژوئن ۲۰۲۳

‫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 API همیشه نمایه‌های مبنای پایداری تولید می‌کند. میانای برنامه‌سازی کاربردی 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 (میانای برنامه‌سازی کاربردی ۳۴) و همچنین در شبیه‌سازها را برطرف می‌کند. (I031ca، b/274314544)

نسخه 1.2.0-alpha14

۳ مه ۲۰۲۳

‫androidx.benchmark:benchmark-*:1.2.0-alpha14 منتشر شد. نسخه 1.2.0-alpha14 شامل این تعهدات است.

رفع اشکال‌ها

  • رفع مشکل FrameTimingMetric در نادیده گرفتن قاب‌هایی که شناسه قاب ناسازگار دارند. این امر باعث می‌شد برخی پویانمایی‌ها در نسخه‌های اخیر پلاتفرم (API 31+) هنگام پویانمایی RenderThread (مثلاً درطول موج‌دار شدن) بسیاری از فریم‌ها را نادیده بگیرند. (I747d2, b/279088460)
  • تجزیه پردازنده ردیابی برای ردیابی‌های بزرگ‌تر از ۶۴ مگابایت اصلاح شد. (Ief831، b/269949822)
  • مشکل تولید نمایه مبنا در Android U که به‌دلیل خروجی متفاوت فرمان pm dump-profiles ناموفق بود برطرف شد. (Id1392، b/277645214)
  • اصلاح اسکریپت قفل کردن ساعت GPU برای مقایسه صحیح رشته‌ها (I53e54، b/213935715)

نسخه 1.2.0-alpha13

۵ آوریل ۲۰۲۳

‫androidx.benchmark:benchmark-*:1.2.0-alpha13 منتشر شد. نسخه 1.2.0-alpha13 حاوی این commit-ها است.

تغییرات میانای برنامه‌سازی کاربردی

  • هنگام تولید نمایه‌های پایه، پارامتر نوع نمایه اضافه شد تا از ویژگی نمایه راه‌اندازی آتی پشتیبانی شود (Ie20d7، b/275093123)
  • میانای برنامه‌سازی کاربردی آزمایشی جدید TraceMetric برای تعریف سنجه‌های کاملاً سفارشی براساس محتوای ردیابی Perfetto اضافه شد. (I4ce31، b/219851406)
  • سنجه‌ای آزمایشی برای تعیین تعداد خطاهای صفحه درطول محک‌زنی اضافه کنید. (I48db0)

نسخه 1.2.0-alpha12

۲۲ مارس ۲۰۲۳

‫androidx.benchmark:benchmark-*:1.2.0-alpha12 منتشر شد. نسخه 1.2.0-alpha12 حاوی این commit-ها است.

ویژگی‌های جدید

  • افزایه gradle نمایه پایه جدید در نسخه آلفا منتشر شده است و تولید نمایه پایه را آسان‌تر می‌کند و گردش کار توسعه‌دهنده را ساده‌تر می‌کند.

تغییرات میانای برنامه‌سازی کاربردی

  • پشتیبانی ردیابی Perfetto در میانای برنامه‌سازی کاربردی ۲۱ و ۲۲ برداشته شد، که شامل Microbenchmarks و میاناهای برنامه‌سازی کاربردی آزمایشی PerfettoTrace می‌شود. پیش‌از این نسخه، اتصال‌های UiAutomation در برخی دستگاه‌ها غیرقابل‌اطمینان بود. (I78e8c)
  • میانای برنامه‌سازی کاربردی آزمایشی عمومی برای PerfettoTraceProcessor اضافه شد تا تجزیه محتوای ردگیری را فعال کند. این گامی به‌سوی سنجه‌های کاملاً سفارشی براساس داده‌های ردیابی Perfetto است. (I2659e، b/219851406)

نسخه 1.2.0-alpha11

۸ مارس ۲۰۲۳

‫androidx.benchmark:benchmark-*:1.2.0-alpha11 منتشر شد. نسخه 1.2.0-alpha11 حاوی این commit-ها است.

رفع اشکال‌ها

  • خرابی‌های MacrobenchmarkRule و BaselineProfileRule هنگام بازنصب یا استخراج نمایه‌ها از دسته برنامه با چند فایل APK برطرف شد. (I0d8c8، b/270587281)

نسخه 1.2.0-alpha10

۲۲ فوریه ۲۰۲۳

‫androidx.benchmark:benchmark-*:1.2.0-alpha10 منتشر شد. نسخه 1.2.0-alpha10 حاوی این تعهدات است.

ویژگی‌های جدید

  • در Android 14 و نسخه‌های بالاتر، به‌لطف ویژگی جدید پلاتفرم، «سنجش کلان» دیگر برنامه‌های هدف را برای بازنشانی وضعیت تدوین مجدد نصب نمی‌کند. قبلاً لازم بود دستگاه روت‌شده داشته باشید یا با حذف شدن وضعیت همه برنامه‌ها (مثلاً ورود به سیستم کاربر) قبل‌از اجرای هر محک سروکار داشته باشید. (I9b08c، b/249143766)

رفع اشکال‌ها

  • رفع مشکل DryRunMode برای جلوگیری از خرابی با نمایه خالی، به‌دلیل رد شدن از کامپایل. درعوض، یک تکرار را اجرا می‌کند و نمایه را استخراج می‌کند تا مطمئن شود چیزی ضبط شده است. (I2f05d, b/266403227)
  • رفع خرابی PowerMetric هنگام بررسی وجود powerstats در سطوح قدیمی میانای برنامه‌سازی کاربردی. (5faaf9، b/268253898)

نسخه 1.2.0-alpha09

‫۱۱ ژانویه ۲۰۲۳

‫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)
  • اکنون وقتی سعی می‌کنید یک معیار کلان را اجرا کنید، api 33 شبیه‌ساز بازو به‌درستی به‌عنوان شبیه‌ساز بازو شناخته می‌شود و هشدار را به‌درستی چاپ می‌کند. (69133b،‏b/262209591)
  • Skip battery level check on devices without battery in Macrobenchmark (fe4114, b/232448937)

نسخه 1.2.0-alpha08

‫۷ دسامبر ۲۰۲۲

‫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)

رفع اشکال‌ها

  • بهبود ایمنی نوشتن خروجی فایل، که باید از نوشته نشدن / الحاق نشدن بی‌صدای فایل‌های خروجی جلوگیری کند، به‌ویژه در API 21/22. (If8c44،‏ b/227510293)
  • برونداد ردیابی simpleperf را اصلاح کنید تا فایل به‌درستی ایجاد و جای‌گذاری شود. این کار همچنین به‌طور کلی‌تر مشکلاتی را که در آن فایل با موفقیت توسط gradle کشیده نمی‌شود برطرف می‌کند. (I12a1c،‏ b/259424099)
  • پیام خطای profileinstaller که وقتی profileinstaller خیلی قدیمی است چاپ می‌شود بهبود یافت. اکنون به‌جای اینکه بگوید پشتیبانی نمی‌شود، به شما می‌گوید نسخه profileinstaller (۱.۲.۱) را برای اندازه‌گیری نمایه‌های پایه در API 31 تا 33 به‌روز کنید. (Ia517f، b/253519888)
  • رفع چندین خطای فرمان پوسته در پیام onerror. چاپ میانای برنامه‌سازی کاربردی موردنیاز <=23، ازجمله راه‌اندازی ناموفق باینری ضبط perfetto و خطاهای ضبط ردیابی (Ib6b87، b/258863685)
  • مرتب‌سازی خودکار قوانین نمایه تولیدشده برای به‌حداقل رساندن تعداد تغییرات درطول زمان (هنگام اعلام حضور قوانین نمایه در کنترل منبع). (Ie2509)
  • خرابی در ساخت‌های بدون روت در Android 13 (API 33) و پایین‌تر با پیام Expected no stderr from echo 3 > /proc/sys/vm/drop_caches برطرف شد (I6c245، b/259508183)

مشکلات شناخته‌شده - MacrobenchmarkScope.dropShaderCache() ممکن است به‌دلیل وجود نداشتن ثبت همه‌فرستی در مانیفست profileinstaller، که هنوز منتشر نشده است، ازکار بیفتد. (I5c728،‏ b/258619948) برای دور زدن این مشکل در profileinstaller:1.3.0-alpha02، موارد زیر را به AndroidManifest.xml برنامه خود (نه معیار سنجش خود) اضافه کنید:

  <!-- 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

‫۹ نوامبر ۲۰۲۲

‫androidx.benchmark:benchmark-*:1.2.0-alpha07 منتشر شد. نسخه 1.2.0-alpha07 حاوی این commit-ها است.

تغییرات میانای برنامه‌سازی کاربردی

  • ‫PowerMetric API را برای اندازه‌گیری انرژی و توان در Macrobenchmarks اضافه می‌کند. (Ife601، b/220183779)
  • مشکل MacrobenchmarkScope.dropShaderCache() برای حذف واقعی حافظه نهان سایه‌زن برطرف شد. این کار حدود ۲۰ میلی‌ثانیه از نویز را از محک‌های 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 را برای کل زمان صرف‌شده در معیار سنجش کلان برای تورم گزارش خواهد کرد. همچنین شرط میانای برنامه‌سازی کاربردی ۲۹ برداشته شد، زیرا TraceSectionMetric با androidx.tracing.Trace برای سطوح پایین‌تر میانای برنامه‌سازی کاربردی بااستفاده از forceEnableAppTracing در برنامه هدف کار می‌کند. (Id7b68، b/231455742)

رفع اشکال‌ها

  • ایمنی همه فرمان‌های پوسته داخلی با اعتبارسنجی همه خروجی‌ها/خطاها بهبود یافته است. (I5984d،‏ b/255402908،‏ b/253094958)
  • دستگاه را در فرمان adb pull نمایه مبنا مشخص کنید تا اگر چند دستگاه متصل است (حداکثر یک شبیه‌ساز)، فرمان pull به‌راحتی کپی شود (I6ac6c، b/223359380)
  • اگر فایل apk آزمایش بنچمارک کلان به‌عنوان خودابزار تنظیم نشده باشد، خطا اضافه می‌شود. این خطا از اجرای محک‌زنی کلان در فرایند برنامه هدف جلوگیری می‌کند. در این فرایند، macrobench نمی‌تواند برنامه را کامپایل/متوقف/شروع سرد کند، یا اجازه‌های خودش را کنترل کند (I4279b)
  • مشکلی در measureRepeated() برطرف شد که باعث می‌شد StartupMode.COLD فرایند هدف را پس‌از setupBlock متوقف نکند. اکنون setupBlock تعامل با برنامه باعث نمی‌شود که فرایند برنامه درحال اجرا باقی بماند و اندازه‌گیری شروع سرد نامعتبر باشد. (I8ebb7)

نسخه 1.2.0-alpha06

‫۲۴ اکتبر ۲۰۲۲

‫androidx.benchmark:benchmark-*:1.2.0-alpha06 منتشر شد. نسخه 1.2.0-alpha06 حاوی این commitها است.

تغییرات میانای برنامه‌سازی کاربردی

  • ‫BaselineProfileRule دیگر در Android 13 (میانای برنامه‌سازی کاربردی ۳۳) به روت نیاز ندارد و دیگر آزمایشی نیست. (Ie0a7d، b/250083467، b/253094958)
    • این تغییر همچنین نحوه انتقال نمایه‌های برنامه به دیسک در دستگاه‌های روت‌نشده را اصلاح می‌کند، اما مستلزم به‌روزرسانی وابستگی profileinstaller برنامه هدف است.
    • برای استفاده از BaselineProfileRule یا CompilationMode.Partial(warmupIterations) در دستگاه روت‌نشده، باید برنامه هدف را نیز به‌روز کنید تا از androidx.profileinstaller.profileinstaller:1.3.0-alpha01 استفاده کند. این کار باعث می‌شود نمایه به‌درستی در دیسک ذخیره شود تا بتوان آن را استخراج/گردآوری کرد.

رفع اشکال‌ها

  • خرابی SampledProfiling در میانای برنامه‌سازی کاربردی ۳۳+ برطرف شد. (I40743، b/236109374)

نسخه 1.2.0-alpha05

‫۵ اکتبر ۲۰۲۲

‫androidx.benchmark:benchmark-*:1.2.0-alpha05 منتشر شد. نسخه 1.2.0-alpha05 حاوی این ارسال‌ها است.

رفع اشکال‌ها

  • رفع خرابی قاب در بیننده ردیابی سیستم «استودیو» برای ردیابی‌های ضبط‌شده معیار (I3f3ae، b/239677443)
  • Correct FrameTimingMetric to list FrameOverrun as requiring API 31 instead of 29 (I716dd, b/220702554)
  • تکرار را در BaselineProfileRule تنظیم کنید و اگر بسته هدف نصب نشده است، به‌وضوح خطا را نشان دهید (قبلاً برای MacrobenchmarkRule انجام شده است). (Ic09a3, b/227991471)

نسخه 1.2.0-alpha04

۲۱ سپتامبر ۲۰۲۲

‫androidx.benchmark:benchmark-*:1.2.0-alpha04 منتشر شد. نسخه 1.2.0-alpha04 شامل این commitها است.

ویژگی‌های جدید

  • برای توسعه محلی سریع‌تر و اعتبارسنجی خودکارسازی برنامه (برای نمونه در پیش‌ارسال)، از آرگومان ابزار دقیق dryRunMode.enable در macrobenchmark (که ازقبل در micro دردسترس است) پشتیبانی کنید. این کار تکرارها را به ۱ لغو می‌کند، از همگردانی صرف‌نظر می‌کند، همه خطاهای پیکربندی را سرکوب می‌کند، و برونداد فایل .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()، پیمایش مبتنی بر «فعالیت» درون‌برنامه، یا فرمان‌های پوسته دریافت کند. (Ia2de6، b/245414235)
  • رفع اشکالی که در آن startActivityAndWait هنگام تلاش برای انتظار برای تکمیل راه‌اندازی در شبیه‌سازها با کاهش سخت‌گیری تشخیص قاب، زمان‌بندی را ازدست می‌داد. (Ibe2c6، b/244594339، b/228946895)

نسخه 1.2.0-alpha03

۷ سپتامبر ۲۰۲۲

‫androidx.benchmark:benchmark-*:1.2.0-alpha03 منتشر شد. نسخه 1.2.0-alpha03 شامل این تعهدات است.

ویژگی‌های جدید

  • میاناهای برنامه‌سازی کاربردی آزمایشی برای استفاده مستقل از BenchmarkState، جدا از BenchmarkRule / JUnit4، اضافه شد. (Id478f، b/228489614)

رفع اشکال‌ها

  • فایل جایگزین احتیاطی «تماشای آسان» برای startActivityAndWait اضافه شد. (01ed77، b/242899915)

نسخه 1.2.0-alpha02

‫۲۴ اوت ۲۰۲۲

‫androidx.benchmark:benchmark-*:1.2.0-alpha02 منتشر شد. نسخه 1.2.0-alpha02 شامل این تعهدات است.

تغییرات میانای برنامه‌سازی کاربردی

  • پیش‌فرض روی am force stop برای MacrobenchmarkScope.killProcess()، حتی درصورت ریشه‌یابی، به‌جز درطول تولید «نمایه مبنا». این را می‌توان با یک شناسه بولی اختیاری لغو کرد. (02cce9، b/241214097)

رفع اشکال‌ها

  • پشتیبانی از تولید نمایه پایه برای برنامه‌های «سیستم». (I900b8، b/241214097)
  • پشتیبانی از بررسی سنجه‌های مصرف برق ODPM در دستگاه‌های روت‌نشده. (a38c78، b/229623230)

نسخه 1.2.0-alpha01

‫۲۷ ژوئیه ۲۰۲۲

‫androidx.benchmark:benchmark-*:1.2.0-alpha01 منتشر شد. نسخه 1.2.0-alpha01 حاوی این commit-ها است.

ویژگی‌های جدید

  • عنصر جدید tracing-perfetto-common که به ابزارها امکان می‌دهد ردیابی «کیت توسعه نرم‌افزار Perfetto» را در برنامه‌ای که آن را نمایان می‌کند فعال کنند (I2cc7f)
  • ‫androidx.benchmark.enabledRules آرگومان ابزار دقیق اضافه شد تا اجرای سنجش کلان براساس فقط سنجش‌ها یا فقط تولید نمایه‌های پایه فیلتر شود. برای اجرای فقط یک نوع آزمایش، مثلاً وقتی فقط BaselineProfiles در شبیه‌ساز تولید می‌شود، «Macrobenchmark» یا «BaselineProfile» را ارسال کنید. فهرست جداشده با کاما نیز پشتیبانی می‌شود. (I756b7، b/230371561)

    برای مثال، در build.gradle مربوط به macrobenchmark شما:

    android {
        defaultConfig {
            testInstrumentationRunnerArgument 'androidx.benchmark.enabledRules', 'BaselineProfile'
        }
    }
    

    یا از خط فرمان Gradle:

    ./gradlew macrobenchmark:cC -P android.testInstrumentationRunnerArguments.androidx.benchmark.enabledRules=BaselineProfile
    

تغییرات میانای برنامه‌سازی کاربردی

  • ‫PowerMetric جدیدی برای اندازه‌گیری انرژی و توان تکالیف در محک‌ها اضافه شد. (I9f39b، b/220183779)
  • حالت کامپایل جدید CompilationMode.Ignore برای رد شدن از بازنشانی نمایه و کامپایل اضافه شد. (Ibbcf8, b/230453509)
  • پارامتر جدیدی به BaselineProfileRule#collectBaselineProfile اضافه شد تا فایل خروجی براساس نام بسته‌ها فیلتر شود (If7338، b/220146561)
  • به توسعه‌دهنده امکان می‌دهد شارژ دستگاه را تخلیه کند تا میزان مصرف برق را اندازه‌گیری کند. (I6a6cb)
  • امکان پاک کردن حافظه نهان سایه‌زن در MacrobenchmarkScope اضافه شد. (I32122)
  • به توسعه‌دهنده امکان می‌دهد نمایش نوع سنجه و جزئیات دسته‌های زیرسیستم موردنظر را پیکربندی کند. (I810c9)
  • قبلاً اگر محک‌زنی در دستگاه پشتیبانی‌نشده‌ای اجرا می‌شد، UnsupportedOperationException ایجاد می‌شد. اکنون UOE فقط درصورتی رخ می‌دهد که سنجه در دستگاه پشتیبانی‌نشده (یعنی PowerMetric.configure) استفاده شود. (I5cf20، b/227229375)
  • ‫TotalPowerMetric و TotalEnergyMetric برای اندازه‌گیری توان و انرژی کل در هر دسته سیستم در معیارسنج‌های کلان اضافه شد. (I3b26b، b/224557371)

رفع اشکال‌ها

  • مشکلی که باعث می‌شد روش‌های کامپایل‌شده به‌درستی بین هر محک کلان در نسخه‌های روت‌نشده بازنشانی نشوند برطرف شد. متأسفانه این کار مستلزم بازنصب کردن apk در هر تکرار است که داده‌های برنامه را برای هر macrobenchmark پاک می‌کند. (I31c74،‏ b/230665435)
  • رفع خرابی ضبط ردیابی در API 21/22‏ (If7fd6،‏ b/227509388،‏ b/227510293،‏ b/227512788)
  • Overhaul activity launch completion detection to fix 'Unable to read any metrics' exception in startup macrobenchmarks. (Ia517c)

نسخه ۱.۱.۱

نسخه ۱.۱.۱

‫۹ نوامبر ۲۰۲۲

‫androidx.benchmark:benchmark-*:1.1.1 منتشر شد. نسخه ۱.۱.۱ حاوی این تعهدات است.

رفع اشکال‌ها

  • ‫android.system.ErrnoException: open failed: EACCES را که در برخی‌از دستگاه‌های Android11 (میانای برنامه کاربردی ۳۰) و بالاتر رخ می‌داد برطرف می‌کند. این یک انتخاب اصلاح از 1.2.0-alpha01 است. (aosp/2072249)

نسخه ۱.۱.۰

نسخه ۱.۱.۰

۱۵ ژوئن ۲۰۲۲

‫androidx.benchmark:benchmark-*:1.1.0 منتشر شد. نسخه ۱.۱.۰ حاوی این ارسال‌ها است.

  • این نسخه با androidx.benchmark:benchmark-*:1.1.0-rc03 یکسان است.

تغییرات مهم از نسخه ۱.۰.۰

نسخه 1.1.0-rc03

۱ ژوئن ۲۰۲۲

‫androidx.benchmark:benchmark-*:1.1.0-rc03 منتشر شد. نسخه 1.1.0-rc03 حاوی این تعهدات است.

رفع اشکال‌ها

  • از نصب مجدد بسته هدف در هر تکرار معیار اجتناب کنید. ( aosp/​​2093027، b/231976084)

  • تأخیر 300ms را از pressHome() بردارید. (aosp/2086030، b/231322975)

  • بهبود سرعت تکرار Macrobenchmark با بهینه‌سازی فرمان‌های Shell که در پشت صحنه استفاده می‌شود. (aosp/2086023، b/231323582)

  • پشتیبانی از «دستگاه‌های Gradle مدیریت‌شده» هنگام تولید «نمایه‌های مبنا» با «کلان‌معیارها». (aosp/2062228، b/228926421)

نسخه 1.1.0-rc02

۱۱ مه ۲۰۲۲

‫androidx.benchmark:benchmark-*:1.1.0-rc02 منتشر شد. نسخه 1.1.0-rc02 حاوی این commit-ها است.

  • توجه داشته باشید که این نسخه شامل تغییر رفتار است، زیرا اکنون برنامه‌ها بین هر محک‌زنی به‌طور کامل بازنصب می‌شوند تا از اندازه‌گیری‌های دقیق اطمینان حاصل شود.

رفع اشکال/تغییرات رفتاری

  • مشکلی که باعث می‌شد کامپایل برنامه بین محک‌های کلان به‌درستی بازنشانی نشود و در نسخه‌های ریشه‌نشده اصلاً بازنشانی نشود برطرف شد. این کار بسیاری از مواردی را که اجرای چندین آزمایش منجر به تأثیر کم یا عدم تأثیر CompilationMode بر اندازه‌گیری‌ها می‌شود برطرف می‌کند. برای دور زدن این مشکل، برنامه هدف اکنون هر روش آزمایش را به‌طور کامل بازنصب می‌کند که باعث پاک شدن داده‌های برنامه بین هر ریزمعیار می‌شود. (I31c74،‏ b/230665435)

  • ازآنجایی‌که این کار مانع از راه‌اندازی وضعیت برنامه‌ها قبل‌از آزمایش می‌شود، اکنون می‌توان از گردآوری / بازنصب کردن رد شد تا بتوان این مشکل را حل کرد. برای مثال، می‌توانید هدف را به‌طور کامل با فرمان پوسته cmd package compile -f -m speed <package> کامپایل کنید و سپس از مرحله کامپایل macrobenchmark عبور کنید.

    برای نمونه در build.gradle مربوط به macrobenchmark:

    android {
        defaultConfig {
            testInstrumentationRunnerArgument 'androidx.benchmark.compilation.enabled, 'false'
        }
    }
    

    یا از خط فرمان Gradle:

    ./gradlew macrobenchmark:cC -P android.testInstrumentationRunnerArguments.androidx.benchmark.compilation.enabled=false
    
  • با افزودن آرگومان ابزار دقیق androidx.benchmark.enabledRules، امکان هم‌رسانی کردن یک ماژول بین محک‌های کلان و آزمایش‌های تولید نمایه مبنا فراهم شد. برای اجرای فقط یک نوع آزمایش، مثلاً هنگام تولید BaselineProfiles در شبیه‌ساز، «Macrobenchmark» یا «BaselineProfile» را ارسال کنید. (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

‫۲۰ آوریل ۲۰۲۲

‫androidx.benchmark:benchmark-*:1.1.0-rc01 منتشر شد. نسخه 1.1.0-rc01 حاوی این تعهدات است.

رفع اشکال‌ها

  • پیوندهای برونداد نمایه پایه در «استودیو Android» اکنون از نام فایل یکتا استفاده می‌کنند. به‌این‌ترتیب، خروجی همیشه جدیدترین نتایج استفاده از BaselineProfileRule را منعکس می‌کند. ( aosp/2057008، b/228203086 )

نسخه 1.1.0-beta06

‫۶ آوریل ۲۰۲۲

‫androidx.benchmark:benchmark-*:1.1.0-beta06 منتشر شد. نسخه 1.1.0-beta06 حاوی این commit-ها است.

رفع اشکال‌ها

  • رفع خرابی ضبط ردیابی در API 21/22‏ (If7fd6، b/227509388)
  • اصلاح کامل تشخیص تکمیل راه‌اندازی فعالیت برای رفع استثنای «هیچ سنجه‌ای خوانده نشد» در بنچمارک‌های کلان راه‌اندازی. (Ia517c)
  • سنجه‌های راه‌اندازی برای Macrobenchmarks هنگام استفاده از CompilationMode.None() اصلاح شد. پیش‌از این تغییر، CompilationMode.Partial() کندتر از Compilation.None() به‌نظر می‌رسید. (611ac9).

نسخه 1.1.0-beta05

‫۲۳ مارس ۲۰۲۲

‫androidx.benchmark:benchmark-*:1.1.0-beta05 منتشر شد. نسخه 1.1.0-beta05 شامل این commit-ها است.

رفع اشکال‌ها

  • هنگام استفاده از CompilationMode.None، پس‌از رد شدن از نصب نمایه، بسته را متوقف کنید. (aosp/1991373)
  • مشکلی که باعث می‌شد Macrobenchmarks هنگام استفاده ازStartupMode.COLD نتواند سنجه‌های راه‌اندازی را جمع‌آوری کند برطرف شد. (aosp/2012227 b/218668335)

نسخه 1.1.0-beta04

۲۳ فوریه ۲۰۲۲

‫androidx.benchmark:benchmark-*:1.1.0-beta04 منتشر شد. نسخه 1.1.0-beta04 حاوی این تعهدات است.

رفع اشکال‌ها

  • رفع مشکل معیارهای ازدست‌رفته در Android 10، و NoSuchElementException که به‌دلیل ثبت نادرست نام‌های فرایند در ردیابی‌ها ایجاد شده بود. (Ib4c17، b/218668335)

  • از PowerManager برای تشخیص محدودسازی حرارتی در Q (API 29) و بالاتر استفاده کنید. این کار به‌طور قابل‌توجهی دفعات مثبت‌های کاذب در تشخیص محدودسازی حرارتی را کاهش می‌دهد (امتحان مجدد معیار پس‌از ۹۰ ثانیه خنک‌سازی)، و معیارها را در ساخت‌های کاربر به‌طور قابل‌توجهی تسریع می‌کند. همچنین، حتی زمانی که ساعت‌ها قفل هستند، تشخیص دریچه گاز را ارائه می‌دهد (اگر برای محیط فیزیکی دستگاه خیلی بالا قفل شده باشند). (I9c027، b/217497678، b/131755853)

  • فیلتر کردن نمونه‌برداری ساده simpleperf فقط برای measureRepeated رشته برای ساده کردن بازرسی (Ic3e12، b/217501939)

  • پشتیبانی از سنجه‌های زیرفرایندهای میانای کاربر نام‌گذاری‌شده در برنامه‌های چندفرایندی (Ice6c0، b/215988434)

  • قوانین «نمایه پایه» را فیلتر کنید تا Android 9 (کیت توسعه نرم‌افزار ۲۸) را هدف‌یابی کنید. aosp/1980331 b/216508418

  • هنگام استفاده از Compilation.None()، از نصب نمایه رد شوید. علاوه‌براین، وقتی برنامه از نسخه قدیمی‌تر androidx.profileinstaller و «افزایه Android Gradle» استفاده می‌کند، هشدارهایی گزارش می‌شود. aosp/1977029

نسخه 1.1.0-beta03

۹ فوریه ۲۰۲۲

‫androidx.benchmark:benchmark-*:1.1.0-beta03 منتشر شد. نسخه 1.1.0-beta03 حاوی این تعهدات است.

تغییرات میانای برنامه‌سازی کاربردی

  • AudioUnderrunMetric به کتابخانه macrobenchmark تحت پرچم آزمایشی اضافه شد تا امکان تشخیص کمبود داده صوتی فراهم شود (Ib5972)
  • ‫BaselineProfileRule دیگر بلوک setup را نمی‌پذیرد زیرا این بلوک عملکردی مشابه profileBlock دارد. (Ic7dfe، b/215536447)

    مثلاً

    @Test
    fun collectBaselineProfile() {
        baselineRule.collectBaselineProfile(
            packageName = PACKAGE_NAME,
            setupBlock = {
                startActivityAndWait()
            },
            profileBlock = {
                // ...
            }
        )
    }
    
    @Test
    fun collectBaselineProfile() {
        baselineRule.collectBaselineProfile(
            packageName = PACKAGE_NAME,
            profileBlock = {
                startActivityAndWait()
                // ...
            }
        )
    }
    

رفع اشکال‌ها

  • مشکل عدم به‌روزرسانی ردیابی‌های نمایه‌ساز ریزمعیار در اجراهای بعدی هنگام پیوند دادن در خروجی Studio برطرف شد (I5ae4d، b/214917025)
  • جلوگیری از دستورات پوسته گردآوری در API 23 (Ice380)
  • ‫FrameCpuTime به FrameDurationCpu و FrameUiTime به FrameDurationUi تغییر نام داده شد تا مشخص شود این‌ها مدت زمان هستند نه مُهر زمان و با پیشوندها مطابقت داشته باشند. (I0eba3، b/216337830)

نسخه 1.1.0-beta02

‫۲۶ ژانویه ۲۰۲۲

‫androidx.benchmark:benchmark-*:1.1.0-beta02 منتشر شد. نسخه 1.1.0-beta02 شامل این تعهدات است.

رفع اشکال‌ها

  • نتایج «نمونه‌برداری پشته‌ای میکروآزمون / نمایه ردیابی روش» اکنون در برونداد Studio پیوند داده شده است، مشابه با دیگر بروندادهای نمایه‌بندی، و سنجه تخصیص را سرکوب نمی‌کند. (Idcb65، b/214440748، b/214253245)
  • BaselineProfileRule اکنون فرمان adb pull را در logcat و خروجی Studio برای کشیدن فایل نوشتاری BaselineProfile تولیدشده چاپ می‌کند. (f08811)

نسخه 1.1.0-beta01

‫۱۲ ژانویه ۲۰۲۲

‫androidx.benchmark:benchmark-*:1.1.0-beta01 منتشر شد. نسخه 1.1.0-beta01 حاوی این تعهدات است.

رفع اشکال‌ها

  • مشکل نادیده گرفته شدن فعال‌سازی متغیر مستقل نمایه‌ساز را برطرف می‌کند. (I37373، b/210619998)
  • ‫CompliationModes منسوخ‌شده برداشته شد (I98186، b/213467659)
  • Switched baseline profile arg of CompilationMode.Partial to enum for clarity. (Id67ea)

نسخه 1.1.0-alpha13

۱۵ دسامبر ۲۰۲۱

‫androidx.benchmark:benchmark-*:1.1.0-alpha13 منتشر شد. نسخه 1.1.0-alpha13 شامل این commit-ها است.

تغییرات میانای برنامه‌سازی کاربردی

  • «ردگیری سیستم» با سربار کم را به خروجی ریزسنجش در Android Q (میانای برنامه‌سازی کاربردی ۲۹+) اضافه کنید. توجه داشته باشید که این ویژگی درحال‌حاضر ردگیری سفارشی (ازطریق میاناهای برنامه‌سازی کاربردی 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

‫۱۷ نوامبر ۲۰۲۱

‫androidx.benchmark:benchmark-*:1.1.0-alpha12 منتشر شد. نسخه 1.1.0-alpha12 حاوی این commitها است.

ویژگی‌های جدید

  • افزودن TraceSectionMetric آزمایشی برای اندازه‌گیری‌های زمان‌بندی سفارشی مبتنی بر ردیابی. (I99db1، b/204572664)

رفع اشکال‌ها

  • دستگاه را در هر تکرار بیدار کنید تا مطمئن شوید واسط کاربر قابل‌آزمایش است - نیاز به غیرفعال کردن صفحه قفل دارد. (Ibfa28، b/180963442)
  • چندین خرابی در حالت نمایه‌سازی StackSampling در شبیه‌سازها و دستگاه‌های روت‌نشده برطرف شد (Icdbda، b/202719335)
  • ‫۰٫۵ ثانیه خواب در پایان هر تکرار برداشته شد - اگر با این تغییر سنجه‌های مفقودشده‌ای می‌بینید، لطفاً اشکال را ثبت کنید. (Iff6aa)
  • احتمال ازدست رفتن داده‌ها را کاهش دهید و سربار حافظه را از ردیابی کاهش دهید (Id2544، b/199324831، b/204448861)
  • با رفتن به قالب ذخیره‌سازی sched فشرده، اندازه ردگیری را حدود ۴۰٪ کاهش دهید. (Id5fb6، b/199324831)
  • پیاده‌سازی‌های به‌روزشده سنجه‌های راه‌اندازی برای اینکه همیشه در پایان رشته رندر تمام شوند. این کار باعث می‌شود در نسخه‌های مختلف پلاتفرم سازگاری بیشتری وجود داشته باشد و با اندازه‌گیری‌های درون‌برنامه‌ای مطابقت بیشتری داشته باشد. (Ic6b55)

نسخه 1.1.0-alpha11

۳ نوامبر ۲۰۲۱

‫androidx.benchmark:benchmark-*:1.1.0-alpha11 منتشر شد. نسخه 1.1.0-alpha11 حاوی این تعهدات است.

تغییرات میانای برنامه‌سازی کاربردی

  • ‫Macrobenchmark اکنون minSdkVersion از 23 دارد. (If2655)
  • BaselineProfileRule آزمایشی جدیدی اضافه می‌کند که می‌تواند نمایه‌های مبنا برای مسیر قطعی کاربر برنامه تولید کند. اسناد دقیق به‌زودی ارائه می‌شود. (Ibbefa، b/203692160)
  • گونه میانای measureRepeated را که برای تماس‌گیرندگان جاوا اضافه شده بود برمی‌دارد، زیرا باعث ابهام در تکمیل/حل کردن روش می‌شد. تماس‌گیرندگان Java دوباره باید Unit.Instance را از measureRepeated برگردانند. اگر این موضوع برایتان دردسرساز است، لطفاً اشکالی را ثبت کنید تا بتوانیم در نسخه بعدی آن را بررسی کنیم. (Ifb23e، b/204331495)

نسخه 1.1.0-alpha10

‫۲۷ اکتبر ۲۰۲۱

‫androidx.benchmark:benchmark-*:1.1.0-alpha10 منتشر شد. نسخه 1.1.0-alpha10 حاوی این تعهدات است.

تغییرات میانای برنامه‌سازی کاربردی

  • ‫StartupTimingMetric به API 23 برگردانده شود. این پیاده‌سازی جدید همچنین reportFullyDrawn()‎ را بهتر مدیریت می‌کند تا منتظر بماند تا محتوای مربوطه ارائه شود. (If3ac9، b/183129298)
  • ‫JvmOverloads به چندین روش MacrobenchmarkScope برای تماس‌گیرندگان Java اضافه شد. (I644fe،‏ b/184546459)
  • تابع MacrobenchmarkRule.measureRepeated جایگزینی ارائه دهید که از Consumer<MacrobenchmarkScope> برای استفاده اصطلاحی در زبان جاوا استفاده می‌کند. (If74ab، b/184546459)

رفع اشکال‌ها

  • رفع مشکل شروع نشدن ردگیری‌ها به‌اندازه کافی زود و نبود داده‌های سنجه. انتظار می‌رود این کار استثناهای «ناتوان در خواندن سنجه‌ها درطول محک» را که توسط خود کتابخانه ایجاد شده‌اند برطرف کند. (I6dfcb، b/193827052، b/200302931)
  • FrameNegativeSlack به FrameOverrun تغییر نام داده است تا معنی آن واضح‌تر شود - یعنی اینکه فریم چقدر از بودجه زمانی خود فراتر رفته است. (I6c2aa، b/203008701)

نسخه 1.1.0-alpha09

‫۱۳ اکتبر ۲۰۲۱

‫androidx.benchmark:benchmark-*:1.1.0-alpha09 منتشر شد. نسخه 1.1.0-alpha09 شامل این تعهدات است.

رفع اشکال‌ها

  • پشتیبانی از حذف حافظه نهان صفحه «هسته» بدون روت در API 31/S+، که دقت راه‌اندازی‌های StartupMode.COLD را افزایش می‌دهد. (Iecfdb، b/200160030)

نسخه 1.1.0-alpha08

۲۹ سپتامبر ۲۰۲۱

‫androidx.benchmark:benchmark-*:1.1.0-alpha08 منتشر شد. نسخه 1.1.0-alpha08 حاوی این ارسال‌ها است.

تغییرات میانای برنامه‌سازی کاربردی

  • فعال کردن پیمایش macrobenchmarks برای اجرا در API 23 (If39c2، b/183129298)
  • Add new type of sampled metric to UI and JSON output, focused on percentiles of multiple samples per iteration. (I56247، b/199940612)
  • جابه‌جایی به سنجه‌های ممیز شناور در سراسر کتابخانه‌های محک (در واسط کاربر «استودیو» کوتاه شده است). (I69249، b/197008210)

نسخه 1.1.0-alpha07

‫۱ سپتامبر ۲۰۲۱

‫androidx.benchmark:benchmark-*:1.1.0-alpha07 منتشر شد. نسخه 1.1.0-alpha07 حاوی این commit-ها است.

تغییرات میانای برنامه‌سازی کاربردی

  • حداقل سطح میانای برنامه‌سازی کاربردی به ۲۱ افزایش یافت تا نشان‌دهنده پایین‌ترین سطح میانای برنامه‌سازی کاربردی باشد که قرار است در آینده پشتیبانی شود. حداقل میانای برنامه‌سازی کاربردی پشتیبانی‌شده فعلی همچنان ازطریق RequiredApi()‎ منتقل می‌شود و درحال‌حاضر ۲۹ است (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

‫۱۸ اوت ۲۰۲۱

‫androidx.benchmark:benchmark-*:1.1.0-alpha06 منتشر شد. نسخه 1.1.0-alpha06 حاوی این commit-ها است.

تغییرات میانای برنامه‌سازی کاربردی

  • آرگومان ابزار دقیق androidx.benchmark.iterations اضافه شد تا امکان لغو دستی تعداد تکرارها هنگام آزمایش/نمایه‌سازی محلی فراهم شود. (6188be،‏ b/194137879)

رفع اشکال‌ها

  • Switched to Simpleperf as default sampling profiler on API 29+. (Ic4b34, b/158303822)

مشکلات شناخته‌شده

  • کار روی CompilationMode.BaselineProfile همچنان ادامه دارد. درحال‌حاضر از آن برای تعیین اینکه نمایه چقدر خوب است استفاده نکنید.

نسخه 1.1.0-alpha05

‫۴ اوت ۲۰۲۱

‫androidx.benchmark:benchmark-*:1.1.0-alpha05 منتشر شد. نسخه 1.1.0-alpha05 حاوی این commit-ها است.

1.1.0-alpha04 was cancelled before release due to a sporatic crash. b/193827052

تغییرات میانای برنامه‌سازی کاربردی

  • startActivityAndWait را برای فراخوانی راه‌اندازی ازطریق am start تغییر دادیم که زمان هر تکرار اندازه‌گیری را تقریباً ۵ ثانیه کاهش می‌دهد، اما دیگر از 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» را برای اندازه‌گیری زمان تا تکمیل پرداز برنامه برونداد می‌کند. برای تعریف این سنجه برای برنامه‌تان، وقتی محتوای اولیه‌تان آماده است، مثلاً وقتی موارد فهرست اولیه‌تان از DB یا شبکه بار می‌شود، Activity.reportFullyDrawn را فراخوانی کنید. (روش reportFullyDrawn بدون بررسی نسخه ساخت در ComponentActivity دردسترس است). توجه داشته باشید که آزمایشتان باید به‌اندازه کافی اجرا شود تا سنجه را ضبط کند (startActivityAndWait منتظر reportFullyDrawn نمی‌ماند). (If1141، b/179176560)
  • کاهش هزینه افزودن فراداده‌های Ui به ردگیری‌ها به‌میزان بیش‌از ۵۰ میلی‌ثانیه (Ic8390، b/193923003)
  • وقتی ردیابی متوقف می‌شود، دفعات نمونه‌گیری به‌شدت افزایش می‌یابد که می‌تواند زمان اجرای معیار سنجش را برای نمونه، در زمان راه‌اندازی تا بیش‌از ۳۰٪ کاهش دهد (Idfbc1، b/193723768)

نسخه 1.1.0-alpha03

‫۱۶ ژوئن ۲۰۲۱

‫androidx.benchmark:benchmark-*:1.1.0-alpha03 منتشر شد. نسخه 1.1.0-alpha03 حاوی این commit-ها است.

ویژگی‌های جدید

رفع اشکال‌ها

  • نمونه کد Gradle برای سرکوب خطاهای محک به‌روز شده است تا از میانای برنامه‌سازی کاربردی منسوخ‌نشده با نحوی استفاده کند که از کاربران .gradle.kts نیز پشتیبانی می‌کند.

    برای نمونه

    testInstrumentationRunnerArguments["androidx.benchmark.suppressErrors"] = "EMULATOR,LOW-BATTERY"
    

نسخه 1.1.0-alpha02

‫۱۸ مه ۲۰۲۱

نسخه محک ۱.۱.۰-آلفا۰۲ مؤلفه بزرگی به محک اضافه می‌کند - «محک کلان». علاوه‌بر معیار سنجش که به شما امکان می‌دهد حلقه‌های CPU را اندازه‌گیری کنید، معیار سنجش کلان به شما امکان می‌دهد تعامل‌های کل برنامه مثل راه‌اندازی و پیمایش را اندازه‌گیری کنید و ردگیری‌ها را ضبط کنید. برای اطلاعات بیشتر، مستندات کتابخانه را ببینید.

‫androidx.benchmark:benchmark-*:1.1.0-alpha02 منتشر شد. نسخه 1.1.0-alpha02 شامل این تعهدها است.

ویژگی‌های جدید

آرتیفکت‌های معیار کلان اضافه شد (androidx.benchmark:benchmark-macro-junit4 و androidx.benchmark:benchmark-macro)

  • سنجه‌های عملکرد راه‌اندازی، پیمایش/پویانمایی را از برنامه‌تان، به‌صورت محلی یا در CI ضبط کنید
  • ضبط و بازرسی کردن ردپاها از داخل «استودیو Android»

رفع اشکال‌ها

  • رفع موقت مشکل اجازه‌های پوسته با دایرکتوری برونداد در Android 12 (توجه - ممکن است برای ادامه ضبط فایل‌های برونداد در دستگاه‌های تحت‌تأثیر، نیاز به به‌روزرسانی «افزایه Android Gradle» به نسخه 7.0.0 canary و «استودیو Android» به نسخه Arctic Fox (2020.3.1) باشد). (Icb039)
  • پشتیبانی از ذخیره کردن پیکربندی در حافظه نهان در BenchmarkPlugin (6be1c1، b/159804788)
  • Simplified file output - on by default, in a directory that doesn't require requestLegacyExternalStorage=true (8b5a4d, b/172376362)
  • خطاهای گزارش هشدار کتابخانه چاپ درباره پیدا نکردن رشته JIT در نسخه‌های پلاتفرمی که در آن وجود ندارد را برطرف می‌کند. (I9cc63، b/161847393)
  • اصلاح برای خواندن حداکثر فرکانس دستگاه. (I55c7a)

نسخه 1.1.0-alpha01

‫۱۰ ژوئن ۲۰۲۰ (۲۱ خرداد ۱۳۹۹)

‫androidx.benchmark:benchmark-common:1.1.0-alpha01،‏ androidx.benchmark:benchmark-gradle-plugin:1.1.0-alpha01، و androidx.benchmark:benchmark-junit4:1.1.0-alpha01 منتشر شده‌اند. نسخه 1.1.0-alpha01 حاوی این commit-ها است.

ویژگی‌های جدید نسخه ۱.۱

  • سنجه تخصیص - اکنون معیارها پس‌از مرحله گرم کردن و زمان‌بندی، مرحله دیگری را اجرا می‌کنند که تعداد تخصیص را ثبت می‌کند. تخصیص‌ها می‌توانند در نسخه‌های قدیمی‌تر پلاتفرم باعث بروز مشکل در عملکرد شوند (در O،‏ ۱۴۰ نانوثانیه به ۸ نانوثانیه در M تبدیل شد - اندازه‌گیری‌شده در Nexus5X، با ساعت‌های قفل‌شده). این سنجه در برونداد کنسول «استودیو Android» و همچنین در
  • پشتیبانی از نمایه‌سازی - اکنون می‌توانید داده‌های نمایه‌سازی را برای اجرای محک‌زنی ضبط کنید تا بررسی کنید چرا کدتان ممکن است به‌کندی اجرا شود. «سنجش عملکرد» از ضبط ردیابی روش یا نمونه‌گیری روش از ART پشتیبانی می‌کند. این فایل‌ها را می‌توان بااستفاده از فایل > باز کردن با Profiler در «استودیو Android» بازرسی کرد.
  • افزایه Benchmark Gradle اکنون پیش‌فرض‌هایی برای راه‌اندازی ساده‌تر ارائه می‌دهد:
    • ‫testBuildType به‌طور پیش‌فرض روی انتشار تنظیم شده است تا از استفاده از وابستگی‌ها با پوشش کد داخلی جلوگیری شود. ‫buildType انتشار نیز به‌عنوان buildType پیش‌فرض پیکربندی شده است که به Android Studio امکان می‌دهد هنگام باز کردن پروژه برای اولین‌بار، گونه ساخت صحیح را به‌طور خودکار انتخاب کند. (b/138808399)
    • ‫signingConfig.debug به‌عنوان پیکربندی امضای پیش‌فرض استفاده می‌شود (b/153583269)

** رفع اشکال‌ها **

  • سربار انتقال گرم‌کردن به‌طور قابل‌توجهی کاهش یافته است، جایی که اولین اندازه‌گیری برای هر محک به‌طور مصنوعی بالاتر از سایرین بود. این مشکل در محک‌های بسیار کوچک (۱ میکروثانیه یا کمتر) بیشتر مشهود بود. (b/142058671)
  • خطای InstrumentationResultParser چاپ‌شده برای هر محک هنگام اجرا از خط فرمان برطرف شد. (I64988، b/154248456)

مشکلات شناخته‌شده

  • خط فرمان، فراخوانی‌های Gradle از «محک» نتایج را مستقیماً چاپ نمی‌کند. می‌توانید با اجرای آن ازطریق «استودیو» یا تجزیه فایل برونداد JSON برای نتایج، این مشکل را دور بزنید.
  • گزارش‌دهی محک‌زنی نمی‌تواند گزارش را از دستگاه‌هایی که برنامه‌ای با applicationId منتهی به «android» یا «download» (بدون حساسیت به حروف بزرگ و کوچک) در آن‌ها نصب شده است دریافت کند. کاربرانی که با این مشکل مواجه می‌شوند باید «افزایه Android Gradle» را به نسخه 4.2-alpha01 یا بالاتر ارتقا دهند.

نسخه ۱.۰.۰

نسخه محک ۱.۰.۰

۲۰ نوامبر ۲۰۱۹

‫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 منتشر شده‌اند. نسخه ۱.۰.۰ حاوی این ثبت‌ها است.

ویژگی‌های اصلی نسخه ۱.۰.۰

کتابخانه Benchmark به شما امکان می‌دهد محک‌های عملکرد کد برنامه را بنویسید و نتایج را به‌سرعت دریافت کنید.

این ویژگی از مشکلات پیکربندی ساخت و زمان اجرا جلوگیری می‌کند و عملکرد دستگاه را تثبیت می‌کند تا اطمینان حاصل شود که اندازه‌گیری‌ها دقیق و یکنواخت هستند. معیارها را مستقیماً در Android Studio یا در «ادغام پیوسته» اجرا کنید تا عملکرد کد را درطول زمان مشاهده کنید و از پس‌رفت جلوگیری کنید.

ویژگی‌های اصلی عبارت‌اند از:

  • تثبیت ساعت
  • اولویت‌بندی خودکار رشته‌ها
  • پشتیبانی از آزمایش عملکرد واسط کاربر، مثلاً در RecyclerView Sample
  • آماده‌سازی و حلقه‌سازی با آگاهی از JIT
  • برونداد معیار JSON برای پس‌پردازش

نسخه 1.0.0-rc01

۲۳ اکتبر ۲۰۱۹

‫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 شامل این commitها است.

ویژگی‌های جدید

  • ردیابی systrace به محک‌ها اضافه شد

رفع اشکال‌ها

  • مشکل ناپایداری سنجه که در آن JIT به‌دلیل اولویت‌زدایی قبل‌از گرم شدن تمام نمی‌شد برطرف شد (b/140773023)
  • دایرکتوری خروجی JSON یکپارچه در سراسر افزایه Android Gradle نسخه ۳.۵ و ۳.۶

نسخه 1.0.0-beta01

۹ اکتبر ۲۰۱۹

‫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 شامل این commit-ها است.

ویژگی‌های جدید

  • اجرای جمع‌آوری زباله قبل‌از هر گرم‌سازی برای کاهش فشار حافظه از یک محک به محک بعدی (b/140895105)

رفع اشکال‌ها

  • ‫androidx.annotation:android-experimental-lint وابستگی اضافه شد تا کد Java وقتی از API آزمایشی استفاده نمی‌شود، خطاهای lint را به‌درستی تولید کند، مشابه آنچه که با شرح آزمایشی Kotlin برای فراخوانندگان Kotlin ارائه می‌شود.
  • اکنون استفاده از آرگومان ابزار دقیق additionalTestOutputDir برای برونداد در «افزایه Android Gradle» نسخه ۳.۶ را به‌درستی تشخیص می‌دهد تا بداند «افزایه Android Gradle» چه زمانی کپی داده‌ها را مدیریت می‌کند.
  • فرکانس ساعت شناسایی‌نشده را در JSON اصلاح کنید تا -1 به‌درستی چاپ شود (b/141945670).

نسخه 1.0.0-alpha06

۱۸ سپتامبر ۲۰۱۹

‫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

۵ سپتامبر ۲۰۱۹

‫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 API اکنون به‌عنوان آزمایشی علامت‌گذاری شده است

رفع اشکال‌ها

  • اصلاح اسکریپت قفل ساعت که در دستگاه‌هایی که فاقد ابزارهای پوسته cut یا expr بودند، با شکست مواجه می‌شد.
  • مشکل مربوط به تکلیف ./gradlew lockClocks که در دستگاه‌های روت‌شده با نسخه قدیمی‌تر ابزار su (که از پرچم -c پشتیبانی نمی‌کرد) متوقف می‌شد برطرف شد.

نسخه 1.0.0-alpha04

۷ اوت ۲۰۱۹

‫androidx.benchmark:benchmark-common:1.0.0-alpha04،‏ androidx.benchmark:benchmark-gradle-plugin:1.0.0-alpha04، و androidx.benchmark:benchmark-junit4:1.0.0-alpha04 منتشر شده‌اند. تغییرات گنجانده‌شده در این نسخه را می‌توانید در اینجا ببینید.

اسناد جدیدی نیز برای نحوه استفاده از کتابخانه Benchmark بدون Gradle اضافه شده است، هم برای استفاده با سیستم‌های ساخت مختلف (مانند Bazel یا Buck) و هم هنگام اجرا در CI. برای اطلاعات بیشتر، به ساختن محک‌ها بدون Gradle و اجرا کردن محک‌ها در «ادغام پیوسته» مراجعه کنید.

ویژگی‌های جدید

  • افزایه Gradle
    • اکنون به‌طور خودکار پوشش آزمایشی را غیرفعال می‌کند و AndroidBenchmarkRunner را به‌طور پیش‌فرض تنظیم می‌کند (b/138374050)
    • هنگام اجرای محک‌ها و هنگام استفاده از AGP نسخه ۳.۶ و بالاتر، از کپی داده مبتنی بر AGP جدید پشتیبانی می‌شود
  • افزوده‌های قالب JSON
    • Output total benchmark test run time (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 است
    • این تقسیم به کتابخانه امکان می‌دهد در آینده بدون استفاده از APIهای JUnit4 از سنجش عملکرد پشتیبانی کند
  • اکنون هشدارهای پیکربندی به‌عنوان خطا درنظر گرفته می‌شوند و باعث ازکارافتادن آزمایش می‌شوند (b/137653596)
    • این کار برای تشویق بیشتر به اندازه‌گیری دقیق، به‌ویژه در CI، انجام می‌شود
    • این خطاها را می‌توان با آرگومان ابزار دقیق به هشدار کاهش داد. برای مثال: -e androidx.benchmark.suppressErrors "DEBUGGABLE,LOW_BATTERY"

رفع اشکال‌ها

  • خطاها هنگام نوشتن در فضای ذخیره‌سازی خارجی در دستگاه‌های Q پیام‌های توصیفی بیشتری ارائه می‌دهند، با پیشنهادهایی درباره نحوه حل مشکل
  • به‌جای اینکه هنگام خاموش بودن صفحه‌نمایش، اجراهای محک با خطا مواجه شوند، صفحه‌نمایش درطول اجراهای محک به‌طور خودکار روشن می‌شود

همیاری‌های خارجی

  • از سرگئی زاخاروف برای مشارکت در بهبود خروجی JSON و رفع مشکلات خاموش شدن صفحه‌نمایش سپاس‌گزاریم!

نسخه 1.0.0-alpha03

۲ ژوئیه ۲۰۱۹

‫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

۶ ژوئن ۲۰۱۹

‫androidx.benchmark:1.0.0-alpha02 و androidx.benchmark:benchmark-gradle-plugin:1.0.0-alpha02 منتشر شدند. ثبت‌های موجود در این نسخه را می‌توانید در اینجا ببینید.

توجه داشته باشید که ما با طرحواره JSON به‌عنوان یک میانای برنامه‌سازی کاربردی رفتار می‌کنیم. قصد داریم از همان محدودیت‌های پایداری سایر APIها پیروی کنیم: پایدار (با استثناهای بسیار نادر) یک‌بار در نسخه بتا، و ثابت در نسخه نهایی، با افزودن فقط در نسخه‌های جزئی و تغییرات/حذف در نسخه‌های اصلی.

تغییرات میانای برنامه‌سازی کاربردی

  • طرحواره JSON بازسازی شد. تغییرات بیشتر در طرح JSON احتمالاً به موارد افزودنی محدود می‌شود:

    • ساختار شیء نتیجه را برای پشتیبانی از گروه‌های معیار اضافی در آینده بازسازمان‌دهی کردیم (b/132713021)
    • اطلاعات بافت اجرای آزمایشی، مثل اطلاعات دستگاه و ساخت و اینکه آیا ساعت‌ها قفل هستند یا نه، به شیء سطح بالا اضافه شد (b/132711920)
    • نام‌های سنجه زمان اکنون در نامشان «ns» دارند (b/132714527)
    • آمار اضافی به هر سنجه گزارش‌شده اضافه شد (حداکثر، میانه، حداقل)، و آمار خلاصه ساده‌شده «نانو» برداشته شد (b/132713851)
  • Removed XML output (b/132714414)

  • تشخیص دریچه حرارتی از میانای برنامه‌سازی کاربردی BenchmarkState.reportData برداشته شد (b/132887006)

رفع اشکال‌ها

  • مشکل عدم نمایش ./gradlew lockClocks در برخی‌از دستگاه‌های دارای سیستم‌عامل جدید برطرف شد (b/133424037)
  • تشخیص محدودسازی برای شبیه‌ساز غیرفعال شد (b/132880807)

نسخه 1.0.0-alpha01

۷ مه ۲۰۱۹

‫androidx.benchmark:benchmark:1.0.0-alpha01 منتشر شد. ثبت‌های موجود در این نسخه در اینجا دردسترس است.