معیار

عملکرد کد خود را به طور دقیق در Android Studio اندازه گیری کنید.
آخرین به روز رسانی انتشار پایدار کاندید را آزاد کنید نسخه بتا انتشار آلفا
18 سپتامبر 2024 1.3.1 - - 1.4.0-alpha01

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

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

ماکرو بنچمارک

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

شیار

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

کاتلین

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

میکرو بنچمارک

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

شیار

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

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

کاتلین

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

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

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

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

شیار

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

کاتلین

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

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

شیار

plugins {
  id 'androidx.benchmark'
}

کاتلین

plugins {
    id("androidx.benchmark")
}

بازخورد

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

یک شماره جدید ایجاد کنید

برای اطلاعات بیشتر به مستندات ردیاب مشکل مراجعه کنید.

نسخه 1.4

نسخه 1.4.0-alpha01

18 سپتامبر 2024

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

ویژگی جدید - Insights Startup App

  • نسخه اولیه بینش راه اندازی برنامه را می توان در 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(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 اکنون در Traces Perfetto به عنوان شمارنده نمایش داده می شوند. ( 3214854 )
  • اسکریپت‌های آزمایشی را برای غیرفعال کردن jit (نیاز به راه‌اندازی مجدد ریشه / زمان اجرا) و بازنشانی وضعیت عملکرد/تست دستگاه اضافه کنید. اینها در حال حاضر به عنوان تکالیف gradle منتشر نمی شوند. ( 7c3732b )
  • آرگومان معیار برای رد شدن از تست ها هنگام اجرا در شبیه ساز اضافه شد. وقتی automaticGenerationDuring build فعال باشد، بنچمارک ها نیز باعث ایجاد نمایه پایه می شوند. اگر از شبیه سازها استفاده شود، این کار با شکست مواجه خواهد شد. با آرگومان جدید skipBenchmarksOnEmulator می‌توانیم به جای آن از آزمایش صرف نظر کنیم. ( 0c2ddcd )
  • تغییر رویداد perf فعال کردن منطق برای اجرا در API 23+ ( 2550048 )

تغییرات API

  • آرگومان آزمایشی 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 استفاده کنید، زمانی که مکث/رزومه اتفاق می‌افتد، دیگر زمان‌ها به‌طور قابل توجهی کاهش نمی‌یابد. ( 5de0968 )

نسخه 1.3

نسخه 1.3.1

18 سپتامبر 2024

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

رفع اشکال

  • ویژگی gradle اضافه شد androidx.baselineprofile.suppressWarnings برای سرکوب همه هشدارهای نمایه پایه ( I7c36e , b/349646646 )
  • پلاگین Gradle Profile Baseline را برای استفاده از nonMinified… از قبل موجود و benchmark… در صورت ایجاد توسط برنامه به جای ایجاد بسته‌بندی، رفع کرد. ( Ia8934 , b/361370179 )
  • java.lang.AssertionError: ERRORS (not suppressed): EMULATOR زمانی که automaticGenerationDuringBuild در شبیه سازها فعال است. از آرگومان جدید برای رد شدن از آزمون استفاده می شود. ( If3f51 , b/355515798 )
  • کوچک‌سازی Microbenchmark - زیرکلاس‌های org.junit.runner.notification.RunListener را در کتابخانه محک نگه دارید ( Ic8ed5 , b/354264743 )
  • TraceSectionMetric برای نادیده گرفتن برش های غیر پایانی رفع کنید. قبلاً اینها مدت زمان -1 در نظر گرفته می شدند، به عنوان مثال در حین جمع بندی یا یافتن حداقل مدت زمان. ( If74b7 )
  • مشکلی در FrameTimingGfxInfoMetric برطرف شد که در آن شروع متریک در صورتی که فرآیند از قبل اجرا نشده بود از کار بیفتد. ( I6e412 )

نسخه 1.3.0

21 آگوست 2024

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

Microbenchmark از 1.2.0 تغییر کرده است

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

MACRObenchmark از 1.2.0 تغییر کرده است

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

ثبت نمایه پایه / پلاگین Gradle از نسخه 1.2.0 تغییر می کند

  • حداکثر نسخه توصیه شده AGP به 9.0.0-alpha01 افزایش یافت.
  • اطمینان حاصل کنید که وظایف mergeArtProfile و mergeStartupProfile همیشه منتظر تولید نمایه پایه هستند. ( I623d6 , b/343086054 )
  • ایجاد یک نمایه پایه با موفقیت، خلاصه‌ای از آنچه تغییر کرده است به دست می‌دهد ( I824c8 , b/269484510 )
  • DSL برای غیرفعال کردن هشدارها اضافه شد ( Ic4deb , b/331237001 )
  • برای اطمینان از اینکه وقتی automaticGenerationDuringBuild غیرفعال است، معیارها از پروفایل‌های پایه تولید شده استفاده می‌کنند ( Ic144f , b/333024280 ) رفع کنید.
  • اصلاح ویژگی پلاگین BaselineProfile gradle برای فعال کردن تولید نمایه پایه و محک زدن هنگام سفارشی کردن نوع ساخت nonMinified یا معیار. ( Ib8f05 , b/324837887 )
  • رفع نمایه‌های پایه کتابخانه در AAR قبل از AGP 8.3.0-alpha15. ( I1d2af , b/313992099 )
  • نشانی وب خروجی خط پایه و نمایه راه‌اندازی در پایان کار ثابت شد. ( I802e5 , b/313976958 )

سایر تغییرات قابل توجه از 1.2.0

  • ضبط ردیابی
    • کاهش خطای EXITCODE 2 هنگام شروع perfetto از یک خطا به هشدار ثبت شده
    • ردیابی AIDL را به طور پیش‌فرض در معیارها فعال کنید (به API 28 نیاز دارد) ( Ia0af2 ، b/341852305 )
    • ردیابی برچسب پورتر را به طور پیش فرض در معیارها فعال کنید. این برای مثال، نقاط ردیابی wakelock را می گیرد. ( Icfe44 , b/286551983 )
    • افزایش زمان شروع ضبط ردیابی برای جلوگیری از خرابی هنگام شروع ردیابی در دستگاه‌های کندتر ( I98841 , b/329145808 )
    • APIهای عمومی PerfettoTraceProcessor.Session.queryMetrics با انواع JSON، textproto و پروتو باینری (کد نشده) اضافه شد. اینها به شما امکان می دهند معیارهای تعبیه شده در TraceProcessor را جستجو کنید ( I54d7f , b/304038382 )
    • شروع مسدود کردن را در رکورد ردیابی Perfetto فعال کنید تا خطر گم شدن داده ها در ابتدای ردیابی کاهش یابد. فقط در API 33+ پشتیبانی می شود. ( Ie6e41 , b/310760059 )
  • خروجی JSON
    • اطلاعات اضافی در زمینه معیار در خروجی JSON اضافه شده است:
      • context.artMainlineVersion - نسخه عدد صحیح ماژول خط اصلی Art (در صورت وجود در دستگاه، -1 در غیر این صورت)
      • context.build.id - برابر با android.os.Build.ID است
      • context.build.version.codename - برابر با android.os.Build.VERSION.CODENAME
      • context.build.version.abbreviatedCodename - مربوط به حرف اول نام رمز پیش از انتشار (از جمله در نسخه های انتشار) ( Ie5020 )
    • لیست profilerOutput به خروجی JSON اضافه شد تا ابزار آسان‌تر در مورد ردیابی پروفایل (مانند Perfetto، Method traces) ( I05ddd ، b/332604449 )
    • هنگامی که از Android Test Orchestrator در ماژول‌های بنچمارک استفاده می‌شود، هشدار اضافه شد، زیرا باعث می‌شود فایل‌های JSON خروجی هر ماژول به‌طور مکرر بازنویسی شوند. ( Ia1af6 , b/286899049 )
    • برای جلوگیری از خرابی نامشخص در هنگام نوشتن یا پس از پردازش فایل، زمانی که نام فایل‌ها بیش از 200 کاراکتر هستند، آن را پرتاب کنید. ( I4a5ab )

نسخه 1.3.0-rc01

7 آگوست 2024

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

رفع اشکال

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

نسخه 1.3.0-beta02

10 جولای 2024

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

رفع اشکال

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

نسخه 1.3.0-beta01

12 ژوئن 2024

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

تغییرات API

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

رفع اشکال

  • نسخه bumped max agp به 9.0.0-alpha01 توصیه می شود. ( I5bbb0 )
  • حالت کامپایل به زمینه معیار اضافه شد ( If5612 , b/325512900 )
  • AIDL tracing را به طور پیش‌فرض فعال کنید (به API 28 نیاز دارد) ( Ia0af2 ، b/341852305 )
  • اطلاعات اضافی در زمینه معیار در خروجی JSON اضافه شده است:
    • context.artMainlineVersion - نسخه عدد صحیح ماژول خط اصلی Art (در صورت وجود در دستگاه، -1 در غیر این صورت)
    • context.build.id - برابر با android.os.Build.ID است
    • context.build.version.codename - برابر با android.os.Build.VERSION.CODENAME
    • context.build.version.abbreviatedCodename - مربوط به حرف اول نام رمز پیش از انتشار (حتی در نسخه های انتشار) ( Ie5020 )
  • StackSampling برای احترام به androidx.benchmark.profiling.sampleDurationSeconds اصلاح می کند ( Ib1d53 )
  • وابستگی macro->common را به api() تغییر دهید، بنابراین استفاده از آن برای مثال PerfettoTrace و PerfettoConfig آسانتر است. ( Icdae3 , b/341851833 )
  • اطمینان حاصل کنید که وظایف mergeArtProfile و mergeStartupProfile همیشه منتظر تولید نمایه پایه هستند. ( I623d6 , b/343086054 )
  • هنگام تصمیم گیری در مورد اینکه آیا باید فعال شود یا خیر، حالت فعال کردن متغیر را در نظر بگیرید. ( I5d19e , b/343249144 )
  • افزایش زمان شروع پیش‌فرض پردازنده perfetto trace. ( I87e8c , b/329145808 )

نسخه 1.3.0-alpha05

14 مه 2024

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

رفع اشکال

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

نسخه 1.3.0-alpha04

1 مه 2024

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

تغییرات API

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

رفع اشکال

  • مقایسه اضافه شده با نمایه پایه قبلی ( I824c8 , b/269484510 )
  • DSL برای غیرفعال کردن هشدارها اضافه شد ( Ic4deb , b/331237001 )
  • هنگامی که انواع معیار غیرفعال هستند، استثنا برای گزارش اطلاعات تغییر کرد ( I8a517 , b/332772491 )
  • ساده‌تر کردن ردیابی متد برای یک Macrobenchmark به مدت زمان measureBlock() . قبلاً از راه اندازی فرآیند هدف شروع می شد و فقط از شروع سرد پشتیبانی می کرد ( Iee85a , b/300651094 )
  • هنگامی که پردازنده perfetto trace کند شروع می شود از خراب شدن خودداری کنید ( I98841 , b/329145808 )

نسخه 1.3.0-alpha03

17 آوریل 2024

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

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

  • APIهای عمومی PerfettoTraceProcessor.Session.queryMetrics را با انواع JSON، textproto و پروتو باینری (کد نشده) اضافه می کند. اینها به شما امکان می دهند معیارهای تعبیه شده در TraceProcessor را جستجو کنید ( I54d7f , b/304038382 )
  • profilerOutput به خروجی JSON اضافه شد تا ابزار آسان‌تری در اطراف ردیابی‌های پروفایل (به عنوان مثال perfetto، ردیابی روش). ( I05ddd , b/332604449 )
  • برچسب پاور به معیار Perfetto Config اضافه شد. این برای مثال، نقاط ردیابی wakelock را می گیرد. ( Icfe44 , b/286551983 )
  • آرگومان inst androidx.benchmark.profiling.skipWhenDurationRisksAnr اضافه شد، می‌توان آن را روی false تنظیم کرد تا از رد شدن ردیابی روش جلوگیری شود، زمانی که مدت زمان مورد انتظار ممکن است باعث ANR شود - اکیداً توصیه می‌شود در اجرای CI از آن اجتناب شود.
  • اضافه androidx.benchmark.profiling.perfCompare.enable . برای مثال در ارزیابی سربار ردیابی روش مفید است. ( I61fb4 , b/329146942 )

تغییرات API

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

رفع اشکال

  • برای اطمینان از اینکه وقتی automaticGenerationDuringBuild غیرفعال است، معیارها از پروفایل‌های پایه تولید شده استفاده می‌کنند ( Ic144f , b/333024280 ) رفع کنید.
  • اصلاح ویژگی پلاگین BaselineProfile gradle برای فعال کردن تولید نمایه پایه و محک زدن هنگام سفارشی کردن نوع ساخت nonMinified یا معیار. ( Ib8f05 , b/324837887 )
  • ردیابی روش ثابت در ماکرو بنچمارک همسطح است، بنابراین ردیابی روش باید کاملاً ثبت و معتبر باشد، حتی در دستگاه‌های کندتر. ( I6349a , b/329904950 )
  • شروع مسدود کردن را در رکورد ردیابی Perfetto فعال کنید تا خطر گم شدن داده ها در ابتدای ردیابی کاهش یابد. فقط در API 33+ پشتیبانی می شود. ( Ie6e41 , b/310760059 )
  • هنگامی که از Android Test Orchestrator در ماژول‌های بنچمارک استفاده می‌شود، هشدار اضافه شد، زیرا باعث می‌شود فایل‌های JSON خروجی هر ماژول به‌طور مکرر بازنویسی شوند. ( Ia1af6 , b/286899049 )
  • مجبور کردن هزاران جداکننده '،' (کاما) برای سازگاری در خروجی استودیو، با نادیده گرفتن منطقه محلی دستگاه ( I3e921 ، b/313496656 )
  • TraceSectionMetric اکنون از برش های ایجاد شده با استفاده از Trace.{begin|end}AsyncSection . ( I91b32 , b/300434906 )
  • برچسب‌های log.w / استثنا به همه خرابی‌های تشخیص راه‌اندازی اضافه شد. این رفتار فعلی را تغییر نمی‌دهد (بنابراین برخی از خطاها پرتاب می‌شوند و برخی دیگر بی‌صدا راه‌اندازی را شناسایی نمی‌کنند)، فقط آن را قابل درک‌تر می‌کند. معمولاً مواردی که Log.w() و نمی‌توانند معیارهای راه‌اندازی را گزارش کنند، مواردی هستند که رویدادهای غیر فریمی در آنها وجود ندارد، استثناهایی در هنگام شناسایی راه‌اندازی به‌جز اطلاعات زمان‌بندی فریم (از برش‌های UI/RT) ایجاد می‌شوند. ( Id240f , b/329145809 )
  • برای کاهش تداخل، قبل از اجرای Macrobenchmark، کارهای dexopt پس‌زمینه را لغو کنید. ( I989ed )
  • اندازه گیری frameCount به FrameTimingMetric اضافه کرد تا به کشف سناریوهایی کمک کند که در آن اندازه گیری ها تغییر می کند زیرا تعداد فریم های تولید شده تغییر کرده است (انیمیشن های جدید اضافه شده، مشکلات عدم اعتبار برطرف شده است). ( I1e5aa )
  • روشن شد که frameOverrunMs معیار ترجیحی برای ردیابی در صورت موجود بودن در اسناد و چرایی آن است. ( I18749 , b/329478323 )

نسخه 1.3.0-alpha02

20 مارس 2024

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

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

  • پشتیبانی آزمایشی R8 در میکروبنچ از طریق قوانین پروگارد تعبیه شده. توجه داشته باشید که این پشتیبانی آزمایشی است و به AGP 8.3 برای کوچک سازی تست های ماژول کتابخانه نیاز دارد. از موارد زیر برای فعال کردن کوچک‌سازی/بهینه‌سازی R8 در build.gradle ماژول بنچمارک خود استفاده کنید، که بسته به حجم کاری باید به افزایش عملکرد قابل توجهی منجر شود. ( I738a3 , b/184378053 )

    android {
        buildTypes.release.androidTest.enableMinification = true
    }
    

رفع اشکال

  • اخطار ردیابی روش را در خطی جدا از خروجی میکروبنچ رفع می‌کند. ( I0455c , b/328308833 )

نسخه 1.3.0-alpha01

21 فوریه 2024

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

تغییرات API

  • تغییر نام پارامترهای بولی MicrobenchmarkConfig برای جلوگیری از کلمه غیر ضروری "should" ( Ia8f00 , b/303387299 )
  • BenchmarkRule.measureRepeatedOnMainThread اضافه شد تا معیارهای رشته اصلی (مانند مواردی که Views یا Compose UIs را لمس می‌کنند) می‌توانند از ایجاد ANR جلوگیری کنند، به خصوص در مجموعه‌های بزرگ در CI. ( I5c86d )
  • FrameTimingGfxInfoMetric اضافه شد، یک اجرای جایگزین آزمایشی FrameTimingMetric با اندازه‌گیری‌هایی که مستقیماً از پلتفرم می‌آیند، به جای استخراج از ردیابی Perfetto. ( I457cb , b/322232828 )
  • قابلیت حذف نمایه ART را در طول تکرارهای warmUp فردی اضافه کنید. ( I17923 )
  • چندین تغییر در TraceSectionMetric API:
    • افزودن Mode.Min ، Mode.Max
    • برای لغو نام بخش به عنوان برچسب متریک، آرگومان برچسب را اضافه کنید
    • اضافه شدن نام حالت به خروجی برای روشن شدن معنای متریک
    • پیش‌فرض به جمع تغییر کرد، زیرا بیشترین استفاده از این معیار برای رویدادهای مکرر است از این تغییرات در استفاده از CI آگاه باشید، زیرا ممکن است ناپیوستگی ایجاد کند یا تجزیه را خراب کند. ( Ic1e82 , b/301892382 , b/301955938 )

رفع اشکال

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

نسخه 1.2

نسخه 1.2.4

17 آوریل 2024

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

رفع اشکال

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

نسخه 1.2.3

24 ژانویه 2024

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

رفع اشکال

  • وقتی نسخه AGP 8.3.0 یا بالاتر باشد، استثنا از پلاگین Gradle Profile Baseline حذف شد.
  • رفع نمایه‌های پایه کتابخانه در AAR قبل از AGP 8.3.0-alpha15.

نسخه 1.2.2

1 دسامبر 2023

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

پروفایل های پایه

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

نسخه 1.2.1

15 نوامبر 2023

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

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

  • پیام خطای بهبود یافته هنگام غیرفعال کردن انواع آزمایشی توسط کاربر ( b/307478189 )
  • ویژگی های اضافه شده برای پشتیبانی از یکپارچه سازی اجرای آزمایشی AS ( b/309805233 )، ( b/309116324 )

نسخه 1.2.0

18 اکتبر 2023

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

تغییرات مهم از 1.1.0

پروفایل های پایه

  • پلاگین Gradle Profile New Baseline، ضبط و گنجاندن نمایه‌های خط پایه را در جریان کار آزمایشی و ساخت شما به‌طور خودکار انجام می‌دهد.
  • BaselineProfileRule.collect اکنون پایدار است، یک نسخه ساده و ساده شده از API آزمایشی قبلی BaselineProfileRule.collectBaselineProfile
    • فقط packageName مشخص کنید و برنامه خود را هدایت کنید
  • برای کتابخانه‌هایی که نمایه‌های خط پایه تولید می‌کنند، اکنون می‌توانید قوانین ایجاد شده را در کد (Argument BaselineProfileRule.collect ) یا حتی ساده‌تر در افزونه gradle فیلتر کنید.
  • رفع می کند

ماکرو بنچمارک

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

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

    • Macrobenchmark اکنون به ProfileInstaller 1.3.0 یا بالاتر در برنامه هدف نیاز دارد تا ضبط / تنظیم مجدد نمایه و پاک کردن کش سایه زن را فعال کند.
  • APIهای آزمایشی متریک جدید

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

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

میکرو بنچمارک

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

نسخه 1.2.0-rc02

6 اکتبر 2023

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

رفع اشکال

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

نسخه 1.2.0-rc01

20 سپتامبر 2023

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

رفع اشکال

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

نسخه 1.2.0-beta05

30 آگوست 2023

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

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

  • پلاگین Gradle Profile Baseline اکنون از پلاگین Gradle اندروید 8.3 پشتیبانی می کند. ( aosp/2715214 )

نسخه 1.2.0-beta04

23 آگوست 2023

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

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

  • افزونه Gradle Profile Profile اکنون از افزونه Android Gradle 8.3 پشتیبانی می کند. ( AOSP/2715214 )

رفع اشکال

  • خرابی ها را در نوشتن / جابجایی و کشیدن پرونده ها (به ویژه آنهایی که از تست های پارامتر شده) با استفاده از نام های بیشتر پرونده های خروجی ، جلوگیری از "=" و ":" در نام پرونده های خروجی را برطرف کنید. ( i759d8 )

نسخه 1.2.0-beta03

9 آگوست 2023

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

تغییرات API

  • استدلال اضافه شده برای فیلتر کردن TraceSectionMetric به تنها بسته هدف ، به طور پیش فرض ( IA219B ، B/292208786 )

رفع اشکال

  • تغییر نام نامگذاری fullTracing.enable Argrentation به perfettoSdkTracing.enable برای سازگاری با نام مصنوعات و سایر منابع. fullTracing.enable به عنوان یک بازگشت به کار خود ادامه خواهد داد. ( i7cc00 )
  • کتابخانه معیار کتابخانه های داخلی (از جمله ردیابی حلقه/فاز میکروب "در حال حاضر در سیستم استودیو ردیابی بیننده و لانه تحت فرآیند صحیح در Perfetto ظاهر می شود. ( i6b2e7 ، b/293510459 )
  • ماکروبنچارک را حذف نکرد و خطای قابل استفاده در API 31+ را حذف کرد ، و از بررسی های قابل استفاده در دستگاه های ریشه دار Eng/UserDebug استفاده کنید. ( i2abac ، b/291722507 )
  • هنگام استفاده از بهینه سازی طرح DEX ، قوانین پروفایل راه اندازی نیز اکنون به عنوان قوانین مشخصات پایه در نظر گرفته می شوند. ( AOSP/2684246 ، B/293889189 )

نسخه 1.2.0-beta02

26 جولای 2023

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

تغییرات API

  • API های تجربی برای معیارهای سفارشی میکروبن و پیکربندی اضافه شده (به عنوان مثال پروفایل و ردیابی). ( i86101 ، b/291820856 )

رفع اشکال

  • گزارش خطای گزارش در Macrobench هنگامی که سیستم عامل برای ردیابی نادرست است ، همانطور که اخیراً در شبیه سازهای API 26/28 ARM64 ثابت شده است. ( i0a328 ، b/282191686 )
  • جزئیات اضافه شده برای تنظیم مجدد تنظیم مجدد در پیشنهاد به روزرسانی شبیه ساز ، زیرا برخی از شبیه سازان اخیراً این مسئله را برطرف کرده اند. ( i8c815 ، b/282191686 )
  • androidx.test.uiautomator:uiautomator:2.2.0 api را به جای وابستگی implementation . ( i1981e )

نسخه 1.2.0-beta01

18 جولای 2023

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

رفع اشکال

  • هشدارها را که گاهی اوقات در خروجی معیار در استودیو سرکوب می شود ، و راه حل های پیشرو در محل های سفید از خروجی معیار که در استودیو نشان داده نمی شود ( IA61D0 ، B/227205461 ، B/286306579 ، B/285912360 )
  • نظر ثابت برای FrameTimingMetric . frameDurationCpuMs نامگذاری شده است. ( IB097F ، B/288830934 ).

نسخه 1.2.0-alpha16

21 ژوئن 2023

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

تغییرات API

  • BaselineProfileRule.collectBaselineProfile() API به 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

7 ژوئن 2023

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

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

  • برای ردیابی استفاده از حافظه از یک برنامه هدف ، MemoryUsageMetric تجربی اضافه شده است. ( i56453 ، b/133147125 ، b/281749311 )
  • پشتیبانی از پیکربندی های کاملاً سفارشی Perfetto را با PerfettoTrace.record ( IF9D75 ، B/280460183 ) اضافه کنید
  • ملک اضافه شده به تولید مشخصات پایه. ./gradlew assemble -Pandroidx.baselineprofile.skipgeneration : ( i37fda ، b/283447020 )

تغییرات API

  • API 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 (API 34) و همچنین شبیه سازها. ( I031ca , b/274314544 )

نسخه 1.2.0-alpha14

3 مه 2023

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

رفع اشکال

  • فریم های FrameTimingMetric را با شناسه های فریم متناقض برطرف کنید. این امر باعث می شود برخی از انیمیشن ها در نسخه های پلت فرم اخیر (API 31+) بسیاری از فریم ها را نادیده بگیرند در حالی که RenderThread انیمیشن بود (به عنوان مثال در طول موج). ( i747d2 ، b/279088460 )
  • تجزیه و تحلیل پردازنده ردیابی ثابت برای اثری بزرگتر از 64 مگابایت. ( IEF831 ، B/269949822 )
  • تولید پروفایل پایه ثابت در Android U به دلیل خروجی مختلف دستور pm dump-profiles . ( ID1392 ، B/277645214 )
  • اسکریپت قفل ساعت GPU را برای مقایسه صحیح رشته ها برطرف کنید ( I53E54 ، B/213935715 )

نسخه 1.2.0-alpha13

5 آوریل 2023

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

تغییرات API

  • پارامتر نوع پروفایل اضافه شده هنگام تولید پروفایل های پایه برای پشتیبانی از ویژگی پروفایل راه اندازی آینده ( IE20D7 ، B/275093123 )
  • اضافه شده API TraceMetric آزمایشی جدید برای تعریف معیارهای کاملاً سفارشی بر اساس محتوای اثری از پرفلتو. ( i4ce31 ، b/219851406 )
  • برای تعیین تعداد گسل های صفحه در طی یک معیار ، یک متریک آزمایشی اضافه کنید. ( i48db0 )

نسخه 1.2.0-alpha12

22 مارس 2023

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

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

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

تغییرات API

  • پشتیبانی از ردیابی پرفراتو را در API 21 و 22 حذف کرد ، که شامل هر دو میکروب مارک ها و API های PerfettoTrace تجربی است. قبل از این نسخه ، اتصالات UiAutomation در برخی از دستگاه ها غیرقابل اعتماد بود. ( i78e8c )
  • API تجربی عمومی اضافه شده برای PerfettoTraceProcessor برای فعال کردن محتوای ردیابی تجزیه و تحلیل. این گامی به سوی معیارهای کاملاً سفارشی مبتنی بر داده های ردیابی Perfetto است. ( i2659e ، b/219851406 )

نسخه 1.2.0-alpha11

8 مارس 2023

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

رفع اشکال

  • تصادفات ثابت در MacrobenchmarkRule و BaselineProfileRule هنگام نصب مجدد یا استخراج پروفایل از یک بسته نرم افزاری برنامه با APK های متعدد. ( I0D8C8 ، B/270587281 )

نسخه 1.2.0-alpha10

22 فوریه 2023

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

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

  • در Android 14+ ، Macrobenchmark دیگر به لطف ویژگی جدید پلت فرم ، دیگر برنامه های هدف را برای تنظیم مجدد وضعیت تدوین نصب نمی کند. پیش از این لازم بود که یک دستگاه ریشه دار داشته باشید ، یا مقابله با تمام حالت برنامه (به عنوان مثال ورود کاربر) قبل از اجرای هر معیار حذف شود. ( i9b08c ، b/249143766 )

رفع اشکال

  • به دلیل پرش از تدوین ، DryRunMode با مشخصات خالی دیگر خراب نکنید. در عوض ، یک تکرار واحد را اجرا می کند و نمایه را برای اطمینان از اسیر چیزی استخراج می کند. ( I2F05D ، B/266403227 )
  • هنگام بررسی حضور PowerStats در سطح API قدیمی ، تصادف PowerMetric را برطرف کنید. ( 5FAAF9 ، B/268253898 )

نسخه 1.2.0-alpha09

11 ژانویه 2023

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

رفع اشکال

  • فعال کردن None به androidx.benchmark.enabledRules Arg Arg برای غیرفعال کردن همه معیارها / تولید مشخصات پایه. ( i3d7fd ، b/258671856 )
  • ضبط PerfettoTrace در ماژول های برنامه (یعنی APK های آزمایش غیر شخصی سازی) ( I12CFC )
  • مشخصات پایه ثابت ADB سفارش آرگومان در خروجی استودیو ( I958D1 ، B/261781624 )
  • ARM Emulator API 33 اکنون هنگام تلاش برای اجرای یک ماکروبچارک به درستی به عنوان چنین شناخته شده است و هشدار را به درستی چاپ می کند. ( 69133b ، b/262209591 )
  • بررسی سطح باتری در دستگاههای بدون باتری در ماکروبنچارک ( FE4114 ، B/232448937 )

نسخه 1.2.0-alpha08

7 دسامبر 2022

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

تغییرات API

  • اضافه شده APIS جدید PerfettoTrace.record {} و PerfettoTraceRule برای ضبط آثار perfetto (که به عنوان آثار سیستم نیز شناخته می شود) به عنوان بخشی از یک آزمایش ، برای بازرسی از رفتار و عملکرد آزمون. ( i3ba16 )
  • BaselineProfileRule اکنون به جای لیستی از پیشوندهای بسته ، یک محمول فیلتر را می پذیرد. این کار کنترل کامل را در زمینه فیلتر فراهم می کند. ( i93240 )
  • یک API تجربی BaselineProfileRule.collectStableBaselineProfile اضافه کنید. ( i923f3 )
  • هنگام تولید پروفایل های پایه با استفاده از BaselineProfileRule ، امکان مشخص کردن پیشوند نام پرونده خروجی را اضافه کنید. ( i7b59f ، b/260318655 )

رفع اشکال

  • ایمنی نوشتن خروجی فایل را بهبود بخشید ، که باید از عدم نوشتن / ضمیمه شدن پرونده های خروجی جلوگیری کند ، به خصوص در API 21/22. ( IF8C44 ، B/227510293 )
  • برای ایجاد و قرار دادن صحیح فایل ، خروجی ردیابی simpleperf را برطرف کنید. این همچنین باید به طور کلی مواردی را که یک پرونده به طور ناموفق توسط Gradle کشیده می شود ، برطرف کند. ( i12a1c ، b/259424099 )
  • بهبود پیام خطای ProfileInstaller چاپ شده هنگامی که ProfileInstaller خیلی قدیمی است. این اکنون به شما می گوید نسخه ProfileInstaller (1.2.1) را برای اندازه گیری پروفایل های پایه در API 31 تا 33 به روز کنید ، به جای اینکه بگویید پشتیبانی نمی شود. ( IA517F ، B/253519888 )
  • چندین خرابی فرمان پوسته را برطرف کنید چاپ پیام ONERROR مورد نیاز API <= 23 ، از جمله تنظیمات باینری ضبط پرفلات و خرابی ضبط ردیابی ( IB6B87 ، B/258863685 )
  • به طور خودکار قوانین پروفایل تولید شده را مرتب کنید تا تعداد تغییرات را به حداقل برساند زیرا در طول زمان تغییر می کنند (هنگام بررسی قوانین نمایه در کنترل منبع). ( IE2509 )
  • تصادف ثابت در ساختهای Unooted در زیر Android 13 (API 33) با پیام Expected no stderr from echo 3 > /proc/sys/vm/drop_caches ( I6C245 ، B/259508183 )

مسائل شناخته شده - MacrobenchmarkScope.dropShaderCache() ممکن است به دلیل ثبت نام مفقود شده در مانیفست پروفایل ، که هنوز منتشر نشده است ، خراب شود. ( I5C728 ، B/258619948 ) برای حل مسئله در profileinstaller:1.3.0-alpha02 ، موارد زیر را به AndroidManifest.xml به برنامه (نه معیار شما) اضافه کنید:

  <!-- workaround bug in profileinstaller 1.3.0-alpha02, remove when updating to alpha03+ -->
  <receiver
    android:name="androidx.profileinstaller.ProfileInstallReceiver"
    android:permission="android.permission.DUMP"
    android:exported="true">
    <intent-filter>
        <action android:name="androidx.profileinstaller.action.BENCHMARK_OPERATION" />
    </intent-filter>
  </receiver>

نسخه 1.2.0-alpha07

9 نوامبر 2022

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

تغییرات API

  • API PowerMetric را برای اندازه گیری انرژی و قدرت در ماکروبچارک ها اضافه می کند. ( IFE601 ، B/220183779 )
  • ثابت MacrobenchmarkScope.dropShaderCache() برای رها کردن حافظه نهان سایه بان. این تقریباً 20 متر نویز از معیارهای StartupMode.COLD را حذف می کند. پیش از این ، تدوین Partial با استفاده از تکرارهای گرمایش ، تعداد نادرست سریع را گزارش می کند ، زیرا ذخیره سازی سایه بان به احتمال زیاد در هنگام گرم شدن اتفاق می افتد. این رفع نیاز به یک دستگاه ریشه دار یا استفاده profileinstaller:1.3.0-alpha02 در برنامه هدف. برای تغییرات API کتابخانه ProfileInstaller ، لطفاً به صفحه ProfileInstaller 1.30-Alpha02 مراجعه کنید. ( Ia5171 , b/231455742 )
  • اضافه شده TraceSectionMode("label", Mode.Sum) ، امکان اندازه گیری کل زمان صرف شده در بخش های چند ردیابی با همان برچسب را فراهم می کند. به عنوان مثال ، TraceSectionMetric("inflate", Mode.Sum) یک inflateMs معیار را برای کل زمان در یک ماکروبچارک صرف شده برای تورم گزارش می دهد. همچنین نیاز API 29 را حذف کرد ، زیرا TraceSectionMetric همراه با androidx.tracing.Trace به سطح API پایین تر ، با استفاده از forceEnableAppTracing در برنامه هدف ، بازگشت. ( id7b68 ، b/231455742 )

رفع اشکال

  • ایمنی بهبود یافته کلیه دستورات پوسته داخلی با اعتبارسنجی کلیه خروجی ها/خطاها. ( i5984d ، b/255402908 ، b/253094958 )
  • دستگاه را در مشخصات اولیه adb pull مشخص کنید ، بنابراین در صورت اتصال چندین دستگاه (حداکثر یک شبیه ساز) می توان دستور کشش را کپی کرد ( I6AC6C ، B/223359380 )
  • اگر APK Test Macrobenchmark به عنوان خود سازی تنظیم نشده باشد ، خطا را اضافه کنید. این خطا مانع از ورود ماکروبنچرم در فرآیند برنامه هدف می شود. در حال انجام ، Macrobench قادر به کامپایل/کشتن/سرماخوردگی برنامه نیست یا مجوزهای خود را کنترل می کند ( I4279B )
  • مسئله ای را در measureRepeated() که در آن StartupMode.COLD setupBlock برطرف می کند. اکنون setupBlock در تعامل با برنامه ، روند برنامه را اجرا نمی کند و اندازه گیری شروع سرما نامعتبر است. ( i8ebb7 )

نسخه 1.2.0-alpha06

24 اکتبر 2022

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

تغییرات API

  • BaselineProfileRule دیگر نیازی به ریشه در اندروید 13 (API 33) ندارد و دیگر آزمایشی نیست. ( Ie0a7d , b/250083467 , b/253094958 )
    • این تغییر همچنین چگونگی پروفایل های یک برنامه را به دیسک در دستگاه های بدون استفاده ، برطرف می کند ، اما نیاز به به روزرسانی وابستگی پروفایل برنامه هدف دارد.
    • برای استفاده از BaselineProfileRule یا CompilationMode.Partial(warmupIterations) در یک دستگاه بدون استفاده ، باید برنامه هدف خود را نیز به روز کنید تا از androidx.profileinstaller.profileinstaller:1.3.0-alpha01 . این امکان را می دهد تا نمایه را به درستی دیسک به درستی انجام دهد ، به طوری که می توان آن را گردآوری و استخراج کرد.

رفع اشکال

نسخه 1.2.0-alpha05

5 اکتبر 2022

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

رفع اشکال

  • رفع خرابی قاب در سیستم استودیو ردیابی بیننده برای معیار آثار ضبط شده ( i3f3ae ، b/239677443 )
  • درست FrameTimingMetric برای لیست FrameOverrun به عنوان نیاز به API 31 به جای 29 ( I716DD ، B/220702554 )
  • تکرار را در BaselineProfileRule تنظیم کنید ، و اگر بسته هدف نصب نشده است (قبلاً برای macrobenchmarkrule انجام شده است) به وضوح پرتاب کنید. ( IC09A3 ، B/227991471 )

نسخه 1.2.0-alpha04

21 سپتامبر 2022

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

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

  • برای توسعه سریع محلی و اعتبار سنجی اتوماسیون برنامه (به عنوان مثال در presubmit) ، پشتیبانی از dryRunMode.enable Argrentation را به macrobenchmark (که در حال حاضر در میکرو موجود است) اضافه کنید. این تکرار تکرار به 1 ، از تلفیق است ، همه خطاهای پیکربندی را سرکوب می کند و اندازه گیری خروجی فایل .json را غیرفعال می کند. ( IB51B4 ، b/175149857 )

    در خط فرمان Gradle:

    ./gradlew macrobenchmark:cC -P android.testInstrumentationRunnerArguments.androidx.benchmark.dryRunMode.enable=true
    

    در build.gradle:

    android {
        defaultConfig {
            testInstrumentationRunnerArgument 'androidx.benchmark.dryRunMode.enable', 'true'
        }
    }
    

رفع اشکال

  • StartupTimingMetric ثابت تا دیگر نیازی به فعالیت های اندازه گیری شده از طریق MacrobenchmarkScope.startActivityAndWait() . این بدان معناست که متریک می تواند پرتاب هایی را از EG اعلان ها ، Context.startActivity() ، ناوبری مبتنی بر فعالیت در برنامه یا دستورات پوسته انتخاب کند. ( IA2DE6 ، B/245414235 )
  • رفع اشکال در جایی که startActivityAndWait با کاهش سخت گیری در تشخیص قاب ، سعی در انتظار برای تکمیل راه اندازی بر روی شبیه سازها می کند. ( IBE2C6 ، B/244594339 ، B/228946895 )

نسخه 1.2.0-alpha03

7 سپتامبر 2022

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

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

  • API های تجربی برای استفاده از BenchmarkState به طور مستقل ، جدا از BenchmarkRule / JUnit4 اضافه شد. ( id478f ، b/228489614 )

رفع اشکال

  • افزود: Leanback Backback برای startActivityAndWait . ( 01ed77 ، b/242899915 )

نسخه 1.2.0-alpha02

24 آگوست 2022

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

تغییرات API

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

رفع اشکال

  • پشتیبانی از تولید مشخصات پایه برای برنامه های سیستم. ( i900b8 ، b/241214097 )
  • پشتیبانی از معیارهای قدرت ODPM در دستگاه های بدون استفاده. ( A38C78 ، B/229623230 )

نسخه 1.2.0-alpha01

27 جولای 2022

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

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

  • مؤلفه جدید ردیابی-پرفیتو-مشترک اجازه می دهد تا ابزارآلات Perfetto SDK را در برنامه ای که در معرض آن قرار دارد فعال کند ( I2CC7F )
  • androidx.benchmark.enabledRules Argertision Argertion برای فعال کردن فیلتر کردن ماکروبنچارک فقط به معیارها ، یا فقط تولید مشخصات پایه. در "macrobenchmark" یا "پایه profile" عبور کنید تا فقط یک نوع تست را اجرا کنید ، به عنوان مثال وقتی فقط BaselineProfiles روی یک شبیه ساز تولید می کنید. لیست جدا از کاما نیز پشتیبانی می کند. ( i756b7 ، b/230371561 )

    به عنوان مثال در ساخت Macrobenchmark خود. Gradle:

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

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

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

تغییرات API

  • PowerMetric جدید برای اندازه گیری کارهای انرژی و قدرت در معیارها اضافه شده است. ( i9f39b ، b/220183779 )
  • اضافه کردن تنظیم مجدد و تدوین پروفایل ، یک مجموعه جدید CompilationMode.Ignore اضافه شده است. ( IBBCF8 ، B/230453509 )
  • یک پارامتر جدید به BaselineProfileRule#collectBaselineProfile برای فیلتر کردن پرونده خروجی توسط نام های بسته اضافه کرد ( IF7338 ، B/220146561 )
  • توسعه دهنده را قادر می سازد دستگاه را برای اندازه گیری تخلیه برق تخلیه کند. ( i6a6cb )
  • توانایی پاک کردن حافظه پنهان سایه بان در MacrobenchmarkScope را اضافه کرد. ( i32122 )
  • توسعه دهنده را قادر می سازد نمایشگر از نوع متریک و دسته بندی های زیر سیستم مورد نظر را پیکربندی کند. ( i810c9 )
  • پیش از این در صورت اجرای روی یک دستگاه پشتیبانی UnsupportedOperationException ، در معیار پرتاب نشده بود. اکنون UOE فقط در صورت استفاده از متریک در دستگاه پشتیبانی نشده (IE: PowerMetric.configure ) اتفاق می افتد. ( i5cf20 ، b/227229375 )
  • برای اندازه گیری قدرت و انرژی کل در هر دسته از سیستم در ماکروبنچرم ها TotalPowerMetric و TotalEnergyMetric اضافه شده است. ( i3b26b ، b/224557371 )

رفع اشکال

  • مسئله ای را برطرف کرد که روشهای کامپایل شده به درستی بین هر ماکروبچارک در ساختهای بدون استفاده مجدداً تنظیم نشده بود. این متأسفانه نیاز به نصب مجدد هر تکرار APK دارد ، که داده های کاربردی را برای هر ماکروبنچارک پاک می کند. ( i31c74 ، b/230665435 )
  • رفع ردیابی سقوط در API 21/22 ( IF7FD6 ، B/227509388 ، B/227510293 ، B/227512788 )
  • تشخیص راه اندازی فعالیت تعمیرات اساسی برای رفع "عدم توانایی خواندن هرگونه معیارها" در ماکروبنومرهای راه اندازی. ( IA517C )

نسخه 1.1.1

نسخه 1.1.1

9 نوامبر 2022

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

رفع اشکال

  • android.system.ErrnoException: open failed: EACCES که در برخی از دستگاه های Android11 ​​(API 30)+ رخ می دهد. این یک انتخاب گیلاس یک رفع از 1.2.0-alpha01 است. ( AOSP/2072249 )

نسخه 1.1.0

نسخه 1.1.0

15 ژوئن 2022

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

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

تغییرات مهم از 1.0.0

نسخه 1.1.0-RC03

1 ژوئن 2022

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

رفع اشکال

  • از نصب مجدد بسته هدف در هر تکرار معیار خودداری کنید. ( AOSP/2093027 ، B/231976084 )

  • تأخیر 300ms را از pressHome() حذف کنید. ( AOSP/2086030 ، B/231322975 )

  • با بهینه سازی دستورات پوسته مورد استفاده در زیر کاپوت ، سرعت تکرار ماکروبنچارک را بهبود بخشید. ( AOSP/2086023 ، B/231323582 )

  • پشتیبانی از دستگاه های درجه بندی مدیریت شده هنگام تولید پروفایل های پایه با ماکروبچارک ها. ( AOSP/2062228 ، B/228926421 )

نسخه 1.1.0-RC02

11 مه 2022

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

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

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

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

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

    به عنوان مثال در ساخت Macrobenchmark خود. Gradle:

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

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

    ./gradlew macrobenchmark:cC -P android.testInstrumentationRunnerArguments.androidx.benchmark.compilation.enabled=false
    
  • با افزودن آرگومان ابزار دقیق androidx.benchmark.enabledRules ، می توان یک ماژول را بین ماکروبنومرم ها و تست های تولید پروفایل پایه به اشتراک گذاشت. در "macrobenchmark" یا "پایه profile" عبور کنید تا فقط یک نوع تست را اجرا کنید ، به عنوان مثال هنگام تولید BaselineProfiles روی یک شبیه ساز. ( i756b7 ، b/230371561 )

    به عنوان مثال در ساخت Macrobenchmark خود. Gradle:

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

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

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

نسخه 1.1.0-rc01

20 آوریل 2022

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

رفع اشکال

  • پیوندهای خروجی پروفایل پایه در Android Studio اکنون از یک نام پرونده منحصر به فرد استفاده کنید. به این ترتیب خروجی همیشه آخرین نتایج استفاده از یک BaselineProfileRule را منعکس می کند. ( AOSP/2057008 ، B/228203086 )

نسخه 1.1.0-beta06

6 آوریل 2022

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

رفع اشکال

  • رفع ردیابی سقوط در API 21/22 ( IF7FD6 ، B/227509388 )
  • تشخیص راه اندازی فعالیت تعمیرات اساسی برای رفع "عدم توانایی خواندن هرگونه معیارها" در ماکروبنومرهای راه اندازی. ( IA517C )
  • معیارهای راه اندازی را برای ماکروبنچارک ها هنگام استفاده از CompilationMode.None() رفع کنید. قبل از این تغییر ، CompilationMode.Partial() به نظر می رسد کندتر از Compilation.None() . ( 611AC9 ).

نسخه 1.1.0-beta05

23 مارس 2022

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

رفع اشکال

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

نسخه 1.1.0-beta04

23 فوریه 2022

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

رفع اشکال

  • معیارهای از دست رفته در Android 10 را برطرف کنید ، و NoSuchElementException ناشی از نام های فرآیند که به درستی در آثار ضبط نمی شوند. ( IB4C17 ، B/218668335 )

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

  • پروفایل نمونه برداری SimplePerf را فقط برای ساده سازی بازرسی از نخ های measureRepeated استفاده کنید ( IC3E12 ، B/217501939 )

  • معیارهای پشتیبانی از زیر فرآیندهای UI نامگذاری شده در برنامه های چند فرآیند ( ICE6C0 ، B/215988434 )

  • قوانین مشخصات پایه را برای هدف قرار دادن اندروید 9 (SDK 28) فیلتر کنید. AOSP/1980331 B/216508418

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

نسخه 1.1.0-beta03

9 فوریه 2022

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

تغییرات API

  • اضافه شده AudioUnderrunMetric به کتابخانه ماکروبنچارک تحت پرچم آزمایشی برای امکان تشخیص زیرنویس صوتی ( IB5972 )
  • BaselineProfileRule دیگر یک بلوک setup را نمی پذیرد زیرا این همان عملکرد profileBlock است. ( IC7DFE ، B/215536447 )

    برای مثال

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

رفع اشکال

  • مسئله ثابت که در آن اثرات پروفایل میکروبن در هنگام اتصال در خروجی استودیو ، در اجرای بعدی به روز می شود ( I5AE4D ، B/214917025 )
  • جلوگیری از دستورات پوسته گردآوری در API 23 ( ICE380 )
  • تغییر نام توسط FrameCpuTime -> FrameDurationCpu ، FrameUiTime -> FrameDurationUi برای روشن شدن این موارد ، نه زمانی است ، نه Timestamps ، و برای مطابقت با پیشوندها. ( i0eba3 ، b/216337830 )

نسخه 1.1.0-beta02

26 ژانویه 2022

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

رفع اشکال

  • نمونه گیری پشته / روش ردیابی پشته میکروبچارک اکنون در خروجی استودیو ، مشابه سایر خروجی های پروفایل مرتبط است و متریک تخصیص را سرکوب نمی کند. ( IDCB65 ، B/214440748 ، B/214253245 )
  • BasineProfilerule اکنون دستور adb pull را در LogCat و خروجی استودیو برای کشیدن فایل متنی پایه تولید شده چاپ می کند. ( F08811 )

نسخه 1.1.0-beta01

12 ژانویه 2022

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

رفع اشکال

  • استدلال پروفایل را برطرف می کند که نادیده گرفته می شود. ( i37373 ، b/210619998 )
  • حذف شده CompliationModes حذف شده ( I98186 ، B/213467659 )
  • مشخصات پایه اصلی ARG از CompilationMode.Partial to enum برای وضوح. ( id67ea )

نسخه 1.1.0-alpha13

15 دسامبر 2021

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

تغییرات API

  • ردیابی سیستم کم فشار را به خروجی میکروبن در Android Q (API 29+) اضافه کنید. توجه داشته باشید که این در حال حاضر ردیابی سفارشی (از طریق android.os.Trace یا androidx.tracing JetPack API) را ضبط نمی کند تا از تأثیرگذاری بر نتایج جلوگیری شود. این ردیابی باید در تشخیص بی ثباتی ، به ویژه از منابع خارج از معیار مفید باشد. ( i298be ، b/205636583 ، b/145598917 )
  • CompilationModes به سه کلاس روشن کنید - کامل ، هیچ ، جزئی. پیش از این ، آنها به طور متناقض به دلیل استدلال های تلفیقی (که ما اکنون به عنوان جزئیات اجرای آن رفتار می کنیم) و ویژگی ها نامگذاری شده بودند. این امر باعث می شود تجارت ، ترکیبات بالقوه و رفتار در سراسر نسخه های پلتفرم واضح تر شود. ( i3d7bf ، b/207132597 )
  • تنظیم و اندازه گیری اکنون به ترتیب همیشه به صورت جفت هستند. اکنون می توانید نام و تکرار بسته را پرس و جو کنید (گرچه تکرار ممکن است در سناریوهای گرمای خاص null باشد). ( ID3B68 ، B/208357448 ، B/208369635 )

رفع اشکال

نسخه 1.1.0-alpha12

17 نوامبر 2021

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

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

  • برای اندازه گیری زمان بندی مبتنی بر ردیابی سفارشی ، TracesectionMetrical را اضافه کنید. ( i99db1 ، b/204572664 )

رفع اشکال

  • دستگاه بیدار هر تکرار ، برای اطمینان از آزمایش UI - به صفحه قفل نیاز دارد که غیرفعال است. ( IBFA28 ، B/180963442 )
  • خرابی های متعدد در حالت پروفایل profsampling در شبیه سازها و دستگاه های غیر ریشه دار ( ICDBDA ، B/202719335 )
  • در پایان هر تکرار ، 0.5 ثانیه خواب را برداشته اید - اگر معیارهای از دست رفته را با این تغییر مشاهده کردید ، لطفاً یک اشکال را مطرح کنید. ( iff6aa )
  • احتمال کاهش داده های کاهش یافته و پایین آمدن حافظه پایین از ردیابی را کاهش دهید ( ID2544 ، B/199324831 ، B/204448861 )
  • با جابجایی به قالب ذخیره سازی برنامه فشرده ، اندازه ردیابی را با 40 ٪ پوند کاهش دهید. ( id5fb6 ، b/199324831 )
  • پیاده سازی های به روز شده از معیارهای راه اندازی تا همیشه در پایان RenderThread به پایان می رسد. این امر در نسخه های پلت فرم بیشتر مورد توجه قرار خواهد گرفت و از نزدیک تر به اندازه گیری های درون برنامه ای می پردازیم. ( IC6B55 )

نسخه 1.1.0-alpha11

3 نوامبر 2021

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

تغییرات API

  • Macrobenchmark در حال حاضر دارای minSdkVersion 23 است. ( IF2655 )
  • یک BaselineProfileRule آزمایشی جدید را اضافه می کند که قادر به تولید پروفایل های پایه برای سفر مهم کاربر برنامه است. مستندات دقیق برای دنبال کردن. ( ibbefa ، b/203692160 )
  • نوع رابط اندازه گیری شده را که برای تماس گیرندگان جاوا اضافه شده است ، حذف می کند ، زیرا این امر باعث ایجاد ابهام در تکمیل/حل روش می شود. تماس گیرندگان جاوا مجدداً نیاز به بازگشت واحد دارند. از طرف MeasurePeated. اگر این یک ناراحتی است ، لطفاً یک اشکال را مطرح کنید ، می توانیم این نسخه را در نسخه آینده بررسی کنیم. ( IFB23E ، B/204331495 )

نسخه 1.1.0-alpha10

27 اکتبر 2021

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

تغییرات API

  • Backport startuptimingMictic برای بازگشت به API 23. این اجرای جدید همچنین دستگیره های بهتری را گزارش می کند () تا زمانی که محتوای مربوطه ارائه شود ، منتظر بمانند. ( IF3AC9 ، B/183129298 )
  • اضافه شده JVMoverload به چندین روش MacrobenchmarkScope برای تماس گیرندگان جاوا. ( i644fe ، b/184546459 )
  • عملکرد جایگزین macrobenchmarkreule.measurerepeated را ارائه دهید که از یک Consumer<MacrobenchmarkScope> برای استفاده ایدیوماتیک در زبان جاوا استفاده می کند. ( IF74AB ، b/184546459 )

رفع اشکال

  • برای اثری که به اندازه کافی زود شروع نمی شود ، و داده های متریک را از دست ندهید. انتظار می رود این استثنائات "قادر به خواندن هر معیاری در هنگام معیار" باشد که توسط خود کتابخانه ایجاد شده است. ( i6dfcb ، b/193827052 ، b/200302931 )
  • Framenegativeslack برای روشن شدن معنی آن به Frameoverrun تغییر نام داده است - چقدر این قاب در بودجه زمانی خود گذشت. ( i6c2aa ، b/203008701 )

نسخه 1.1.0-alpha09

13 اکتبر 2021

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

رفع اشکال

  • پشتیبانی از حافظه پنهان صفحه هسته بدون ریشه در API 31/S+، که باعث افزایش دقت راه اندازی StartupMode می شود. ( IECFDB ، B/200160030 )

نسخه 1.1.0-alpha08

29 سپتامبر 2021

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

تغییرات API

  • Macrobenchmarks پیمایش را فعال کنید تا به API 23 برگردند ( IF39C2 ، B/183129298 )
  • نوع جدیدی از متریک نمونه برداری را به خروجی UI و JSON اضافه کنید ، که بر روی صدک های نمونه های متعدد در هر تکرار متمرکز شده است. ( i56247 ، b/199940612 )
  • به معیارهای نقطه شناور در سراسر کتابخانه های معیار (کوتاه در UI استودیو) تغییر دهید. ( i69249 ، b/197008210 )

نسخه 1.1.0-alpha07

1 سپتامبر 2021

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

تغییرات API

  • MIN API را به 21 افزایش داد تا نشان دهنده پایین ترین سطح API در نظر گرفته شده در آینده باشد. MIN API فعلی پشتیبانی شده همچنان از طریق مورد نیاز () منتقل می شود و در حال حاضر 29 ( I440D6 ، B/183129298 ) است

رفع اشکال

  • ProfileInstaller برطرف می کند تا برنامه ها را با استفاده از پروفایل های پایه برای اجرای ماکروبنومرم ها با استفاده از CompilationMode.BaselineProfile آسانتر کند. ( I42657 ، b/196074999 ) توجه: نیاز به به روزرسانی در androidx.profileinstaller:profileinstaller:1.1.0-alpha04 یا بیشتر.
  • StartupMode.COLD + CompilationMode.None معیارهای اکنون پایدارتر هستند. ( i770cd ، b/196074999 )

نسخه 1.1.0-alpha06

18 آگوست 2021

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

تغییرات API

  • androidx.benchmark.iterations Argrentation Argumentation برای اجازه دادن به تعداد تکرار حساب در هنگام آزمایش/پروفایل در محلی امکان پذیر است. ( 6188be ، b/194137879 )

رفع اشکال

  • به SimplePerf به عنوان پروفایل نمونه گیری پیش فرض در API 29+ تغییر یافته است. ( IC4B34 ، B/158303822 )

مسائل شناخته شده

  • CompilationMode.BaselineProfile اثری در حال انجام است. از استفاده از آن خودداری کنید تا مشخص شود که اکنون یک پروفایل خوب است.

نسخه 1.1.0-alpha05

4 آگوست 2021

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

1.1.0-alpha04 قبل از انتشار به دلیل تصادف اسپوریک لغو شد. b/193827052

تغییرات API

  • SoftRoged StartActivityAndwait برای فراخوانی از طریق am start ، که باعث کاهش زمان هر تکرار اندازه گیری تقریباً 5 ثانیه می شود ، با هزینه دیگر از بسته های قصد. ( i5a6f5 ، b/192009149

رفع اشکال

  • در صورت تشخیص دریچه گاز به طور مکرر ، پرخاشگری تشخیص دریچه گاز حرارتی را کاهش داده و پایه را مجدداً مجدداً تنظیم کنید. ( i7327b )
  • FirmetimingMetric را برای کار در Android S Beta ( IB60CC ، B/193260119 ) رفع می کند
  • برای پشتیبانی بهتر از CompilationMode.BaselineProfile ، از یک EmptyActivity استفاده کنید تا برنامه هدف را از یک حالت متوقف شده خارج کنید. ( ID7CAC ، B/192084204 )
  • پسوند پرونده ردیابی را به .perfetto-trace تغییر داد تا مطابق با استاندارد پلتفرم باشد. ( i4c236 ، b/174663039 )
  • StartuptimingMetric اکنون متریک "کاملاً کشیده" را برای اندازه گیری زمان تا زمانی که درخواست شما به پایان نرسد ، وارد می کند. برای تعریف این متریک برای برنامه خود ، با فعالیت تماس بگیرید. در صورت آماده بودن محتوای اولیه شما ، مانند زمانی که موارد لیست اولیه شما از DB یا Network بارگیری می شود ، به صورت گزارش دهی کنید. (روش گزارش دهی در دسترس بدون بررسی نسخه های ساخت در ComponentActivity). توجه داشته باشید که آزمایش شما باید به اندازه کافی طولانی اجرا شود تا متریک را ضبط کند (StartActivityWait منتظر گزارش گزارش نشده است). ( IF1141 ، b/179176560 )
  • کاهش هزینه ضمیمه ابرداده UI به اثری از 50+ ms ( IC8390 ، B/193923003 )
  • فرکانس رای گیری به شدت افزایش یافته هنگام متوقف کردن ردیابی ، که می تواند به عنوان مثال معیار راه اندازی معیار را 30+٪ کاهش دهد ( IDFBC1 ، B/193723768 )

نسخه 1.1.0-alpha03

16 ژوئن 2021

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

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

رفع اشکال

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

    به عنوان مثال،

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

نسخه 1.1.0-alpha02

18 مه 2021

معیار نسخه 1.1.0 -alpha02 یک مؤلفه بزرگ را برای محک و معیار به ارمغان می آورد - macrobenchmark. علاوه بر معیار که به شما امکان می دهد حلقه های CPU را اندازه گیری کنید ، Macrobenchmark به شما امکان می دهد تعامل کامل برنامه مانند راه اندازی و پیمایش را اندازه گیری کنید و اثری را ضبط کنید. برای اطلاعات بیشتر به مستندات کتابخانه مراجعه کنید.

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

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

Artifacts Macrobenchmark اضافه شده است ( androidx.benchmark:benchmark-macro-junit4 و androidx.benchmark:benchmark-macro )

  • Capture startup, scrolling/animation performance metrics from your app, locally or in CI
  • Capture and inspect traces from within Android Studio

رفع اشکال

  • Workaround shell permissions issue with output directory on Android 12 (Note - may require updating Android Gradle Plugin to 7.0.0 canary and Android Studio to Arctic Fox (2020.3.1), to continue capturing output files on affected devices). ( Icb039 )
  • Support configuration caching in BenchmarkPlugin ( 6be1c1 , b/159804788 )
  • Simplified file output - on by default, in a directory that doesn't require requestLegacyExternalStorage=true ( 8b5a4d , b/172376362 )
  • Fixes library printing logcat warnings about not finding JIT thread on platform versions where it is not present. ( I9cc63 , b/161847393 )
  • Fix for reading device max frequency. ( I55c7a )

نسخه 1.1.0-alpha01

10 ژوئن 2020

androidx.benchmark:benchmark-common:1.1.0-alpha01 , androidx.benchmark:benchmark-gradle-plugin:1.1.0-alpha01 , and androidx.benchmark:benchmark-junit4:1.1.0-alpha01 are released. نسخه 1.1.0-alpha01 حاوی این commit ها است.

New Features of 1.1

  • Allocation Metric - Benchmarks now run an additional phase after warmup and timing, capturing allocation counts. Allocations can cause performance problems on older versions of the platform (140ns in O became 8ns in M - measured on Nexus5X, with locked clocks). This metric is displayed in Android Studio console output, as well as in the
  • Profiling support - You can now capture profiling data for a benchmark run, to inspect why your code may be running slowly. Benchmark supports capturing either method tracing, or method sampling from ART. These files can be inspected with the Profiler inside Android Studio using File > Open .
  • The Benchmark Gradle plugin now provides defaults for simpler setup:
    • testBuildType is set to release by default, to avoid using dependencies with code coverage built-in. The release buildType is also configured as the default buildType, which allows Android Studio to automatically select the correct build variant when opening a project for the first time. ( b/138808399 )
    • signingConfig.debug is used as the default signing config ( b/153583269 )

** Bug Fixes **

  • Significantly reduced the warmup transition overhead, where the first measurement for each benchmark was artificially higher than others. This issue was more pronounced in very small benchmarks (1 microsecond or less). ( b/142058671 )
  • Fixed InstrumentationResultParser error printed for each benchmark when running from command line. ( I64988 , b/154248456 )

مسائل شناخته شده

  • Command line, gradle invocations of Benchmark do not print out results directly. You can work around this by either running through Studio, or parsing the JSON output file for results.
  • Benchmark reporting fails to pull the report from devices that have an app installed with an applicationId ending with either “android” or “download” (case insensitive). Users hitting this issue should upgrade the Android Gradle Plugin to 4.2-alpha01 or later.

نسخه 1.0.0

Benchmark Version 1.0.0

20 نوامبر 2019

androidx.benchmark:benchmark-common:1.0.0 , androidx.benchmark:benchmark-gradle-plugin:1.0.0 , and androidx.benchmark:benchmark-junit4:1.0.0 are released with no changes from 1.0.0-rc01. Version 1.0.0 contains these commits .

ویژگی های اصلی 1.0.0

The Benchmark library allows you to write performance benchmarks of app code and get results quickly.

It prevents build and runtime configuration issues and stabilizes device performance to ensure that measurements are accurate and consistent. Run the benchmarks directly in Android Studio , or in Continuous Integration to observe code performance over time, and to prevent regressions.

Major features include:

  • Clock stabilization
  • Automatic thread prioritization
  • Support for UI performance testing, such as in the RecyclerView Sample
  • JIT-aware warmup and looping
  • JSON benchmark output for post-processing

نسخه 1.0.0-rc01

23 اکتبر 2019

androidx.benchmark:benchmark-common:1.0.0-rc01 , androidx.benchmark:benchmark-gradle-plugin:1.0.0-rc01 , and androidx.benchmark:benchmark-junit4:1.0.0-rc01 are released. Version 1.0.0-rc01 contains these commits .

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

  • Added systrace tracing to benchmarks

رفع اشکال

  • Fixed metric instability issue where JIT wouldn't finish before warm up due to deprioritization ( b/140773023 )
  • Unified JSON output directory across Android Gradle Plugin 3.5 and 3.6

نسخه 1.0.0-beta01

9 اکتبر 2019

androidx.benchmark:benchmark-common:1.0.0-beta01 , androidx.benchmark:benchmark-gradle-plugin:1.0.0-beta01 , and androidx.benchmark:benchmark-junit4:1.0.0-beta01 are released. Version 1.0.0-beta01 contains these commits .

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

  • Run garbage collection before each warmup to reduce memory pressure from one benchmark to leak to the next ( b/140895105 )

رفع اشکال

  • Added androidx.annotation:android-experimental-lint dependency, so that Java code will correctly produce lint errors when experimental API is not used, similar to what is provided by the Kotlin experimental annotation for Kotlin callers.
  • Now correctly detects usage of additionalTestOutputDir instrumentation argument for output in Android Gradle Plugin 3.6, to know when AGP will handle data copy.
  • Fix undetected clock frequency in JSON to correctly print -1 ( b/141945670 ).

نسخه 1.0.0-alpha06

18 سپتامبر 2019

androidx.benchmark:benchmark-common:1.0.0-alpha06 , androidx.benchmark:benchmark-gradle-plugin:1.0.0-alpha06 , and androidx.benchmark:benchmark-junit4:1.0.0-alpha06 are released. Version 1.0.0-alpha06 contains these commits .

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

  • Added a check for incorrectly using the old package for the test runner, which now provides a more-helpful error message

API تغییر می کند

  • The experimental annotation ExperimentalAnnotationReport is now correctly public. Usage of the experimental BenchmarkState#report API now requires this annotation

نسخه 1.0.0-alpha05

5 سپتامبر 2019

androidx.benchmark:benchmark-common:1.0.0-alpha05 , androidx.benchmark:benchmark-gradle-plugin:1.0.0-alpha05 , and androidx.benchmark:benchmark-junit4:1.0.0-alpha05 are released. commit های موجود در این نسخه را می توانید در اینجا بیابید.

API تغییر می کند

  • BenchmarkState.reportData API is now marked experimental

رفع اشکال

  • Fix for the clock-locking script, which would fail on devices that were either missing the cut or expr shell utilities.
  • Fixed an issue with ./gradlew lockClocks task that would hang on devices that were rooted with an older version of the su utility, which did not support the -c flag.

نسخه 1.0.0-alpha04

7 آگوست 2019

androidx.benchmark:benchmark-common:1.0.0-alpha04 , androidx.benchmark:benchmark-gradle-plugin:1.0.0-alpha04 , and androidx.benchmark:benchmark-junit4:1.0.0-alpha04 are released. commit های موجود در این نسخه را می توانید در اینجا بیابید.

New documentation has also been added for how to use the Benchmark library without Gradle, both for usage with different build systems (such as Bazel or Buck), and when running in CI. For more information, see Build benchmarks without Gradle and Run benchmarks in Continuous Integration .

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

  • Gradle plugin
    • Now automatically disables test coverage, and sets the AndroidBenchmarkRunner by default ( b/138374050 )
    • Added support for new AGP-based data copy, when running benchmarks and when using AGP 3.6+
  • JSON format additions
    • Output total benchmark test run time ( b/133147694 )
    • @Parameterized benchmarks that use a name string (for example @Parameters(name = "size={0},depth={1}") ) now output parameter names and values per benchmark in the JSON output ( b/132578772 )
  • Dry Run mode ( b/138785848 )
    • Added a "dry run" mode for running each benchmark loop only once, to check for errors/crashes without capturing measurements. This can be useful eg for, for example, quickly running benchmarks in presubmit to check that they're not broken.

API تغییر می کند

  • Module structure has changed, splitting the library ( b/138451391 )
    • benchmark:benchmark-junit4 contains classes with JUnit dependency: AndroidBenchmarkRunner , and BenchmarkRule , both of which have moved into the androidx.benchmark.junit4 package
    • benchmark:benchmark-common contains the rest of the logic, including the BenchmarkState API
    • This split will allow the library to support benchmarking without JUnit4 APIs in the future
  • Configuration warnings are now treated as errors, and will crash the test ( b/137653596 )
    • This is done to further encourage accurate measurements, especially in CI
    • These errors can be reduced back to warnings with an instrumentation argument. For example: -e androidx.benchmark.suppressErrors "DEBUGGABLE,LOW_BATTERY"

رفع اشکال

  • Errors when writing to external storage on Q devices provide more-descriptive messages, with suggestions of how to resolve the issue
  • Screens are automatically turned on during benchmark runs, instead of failing when the screen is off

External contributions

  • Thanks to Sergey Zakharov for contributing JSON output improvements and the fix for screen off issues!

نسخه 1.0.0-alpha03

2 جولای 2019

androidx.benchmark:benchmark:1.0.0-alpha03 and androidx.benchmark:benchmark-gradle-plugin:1.0.0-alpha03 are released. commit های موجود در این نسخه را می توانید در اینجا بیابید.

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

  • Expose sleep duration due to thermal throttling per benchmark in the full JSON report

رفع اشکال

  • The Gradle plugin should no longer be required to be applied after Android plugins and the Android block
  • Adds support for benchmark reports on Android 10 devices using scoped storage

نسخه 1.0.0-alpha02

6 ژوئن 2019

androidx.benchmark:1.0.0-alpha02 and androidx.benchmark:benchmark-gradle-plugin:1.0.0-alpha02 are released. commit های موجود در این نسخه را می توانید در اینجا بیابید.

Note that we are treating the JSON schema as an API. We plan to follow the same stability constraints as other APIs: stable (with very rare exceptions) once in beta, and fixed in final release, with only additions in minor releases and changes/removals in major releases.

API تغییر می کند

  • Overhauled JSON schema. Further changes to the JSON schema are likely to be limited to additions:

    • Reorganized the result object structure to support additional metric groups in the future ( b/132713021 )
    • Added test run context information, such as device and build info and whether clocks are locked, to the top-level object ( b/132711920 )
    • Time metric names now have 'ns' in their name ( b/132714527 )
    • Additional stats added per reported metric (maximum, median, minimum), and removed simplified 'nanos' summary stat ( b/132713851 )
  • Removed XML output ( b/132714414 )

  • Thermal throttle detection removed from BenchmarkState.reportData API ( b/132887006 )

رفع اشکال

  • Fixed ./gradlew lockClocks not sticking on some recent OS devices ( b/133424037 )
  • Throttling detection disabled for emulator ( b/132880807 )

نسخه 1.0.0-alpha01

7 مه 2019

androidx.benchmark:benchmark:1.0.0-alpha01 is released. The commits included in this version are available here .