معیار

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

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

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

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

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

Groovy

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

Kotlin

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

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

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

شیار

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

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

کاتلین

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

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

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

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

شیار

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

کاتلین

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

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

شیار

plugins {
  id 'androidx.benchmark'
}

کاتلین

plugins {
    id("androidx.benchmark")
}

بازخورد

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

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

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

نسخه 1.4

نسخه 1.4.0-alpha05

13 نوامبر 2024

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

رفع اشکال

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

نسخه 1.4.0-alpha04

30 اکتبر 2024

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

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

  • (تجربی) تولید نمایه پایه و محک زدن را روی برنامه‌های نصب شده روی یک کاربر ثانویه فعال کنید، برای مثال هر برنامه‌ای در دستگاه‌های 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 )
  • در معیارهای CpuEventCounter ، اگر اندازه‌گیری‌های نامعتبر مشاهده شد، پرتاب کنید (مثلاً دستورالعمل‌ها/cpucycles==0) ​​( I8c503 )

نسخه 1.4.0-alpha03

16 اکتبر 2024

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

تغییرات API

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

رفع اشکال

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

نسخه 1.4.0-alpha02

2 اکتبر 2024

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

تغییرات API

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

رفع اشکال

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

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

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

و سپس آزمایشگاه تست Firebase را با استفاده از:

  firebaseTestLab {

      // Credentials for FTL service
      serviceAccountCredentials.set(file("credentials.json"))

      // Creates one or more managed devices to run the tests on.
      managedDevices {
          "ftlDeviceShiba34" {
              device = "shiba"
              apiLevel = 34
          }
      }

      // Ensures the baseline profile is pulled from the device.
      // Note that this will be automated as well later with aosp/3272935.
      testOptions {
          results {
              directoriesToPull.addAll("/storage/emulated/0/Android/media/${android.namespace}")
          }
      }
  }

همچنین دستگاه FTL ایجاد شده باید به پسوند نمایه پایه اضافه شود:

  baselineProfile {
      managedDevices += "ftlDeviceShiba34"
      useConnectedDevices = false
  }

نسخه 1.4.0-alpha01

18 سپتامبر 2024

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

ویژگی جدید - 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 = 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 اکنون در 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.3

16 اکتبر 2024

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

رفع اشکال

  • هنگامی که دستگاه AVD دارای فضاهای خالی باشد، CollectBaselineProfileTask رفع کرد ( Ia0225 , b/371642809 )

نسخه 1.3.2

2 اکتبر 2024

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

رفع اشکال

  • ثابت شده است که آزمایشگاه تست Firebase (FTL) قادر به بیرون آوردن فایل‌های نمایه خط پایه یا نتایج ماکرو بنچمارک از پلاگین Gradle Profile Baseline نیست. ( I2f678 , b/285187547 )

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

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

و سپس آزمایشگاه تست Firebase را با استفاده از:

  firebaseTestLab {

      // Credentials for FTL service
      serviceAccountCredentials.set(file("credentials.json"))

      // Creates one or more managed devices to run the tests on.
      managedDevices {
          "ftlDeviceShiba34" {
              device = "shiba"
              apiLevel = 34
          }
      }

      // Ensures the baseline profile is pulled from the device.
      // Note that this will be automated as well later with aosp/3272935.
      testOptions {
          results {
              directoriesToPull.addAll("/storage/emulated/0/Android/media/${android.namespace}")
          }
      }
  }

همچنین دستگاه FTL ایجاد شده باید به پسوند نمایه پایه اضافه شود:

  baselineProfile {
      managedDevices += "ftlDeviceShiba34"
      useConnectedDevices = false
  }

نسخه 1.3.1

18 سپتامبر 2024

androidx.benchmark:benchmark-*:1.3.1 منتشر شد. نسخه 1.3.1 حاوی این 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 را کاهش داد و جزئیات بیشتری را به پیام های خطا اضافه کرد. ( Iadede )

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

  • حداکثر نسخه توصیه شده AGP به 9.0.0-alpha01 افزایش یافت.
  • اطمینان حاصل کنید که وظایف mergeArtProfile و mergeStartupProfile همیشه منتظر تولید نمایه پایه هستند. ( I623d6 , b/343086054 )
  • ایجاد یک نمایه پایه با موفقیت، خلاصه‌ای از آنچه تغییر کرده است به دست می‌دهد ( I824c8 , b/269484510 )
  • DSL برای غیرفعال کردن هشدارها اضافه شد ( Ic4deb , b/331237001 )
  • برای اطمینان از اینکه وقتی automaticGenerationDuringBuild غیرفعال است، معیارها از پروفایل‌های پایه تولید شده استفاده می‌کنند ( Ic144f , b/333024280 ) رفع کنید.
  • اصلاح ویژگی پلاگین 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 حاوی این تعهدات است.

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

  • افزونه Baseline Profiles Gradle اکنون از پلاگین 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 به perfettoSdkTracing.enable برای سازگاری با نام مصنوع و سایر مراجع تغییر نام داد. fullTracing.enable به عنوان یک نسخه بازگشتی به کار خود ادامه خواهد داد. ( I7cc00 )
  • نقاط ردیابی داخلی کتابخانه محک (از جمله ردیابی حلقه/فاز میکروبنچمارک) اکنون در نمایشگر ردیابی سیستم استودیو نشان داده می‌شوند و تحت فرآیند صحیح در Perfetto قرار می‌گیرند. ( I6b2e7 , b/293510459 )
  • خطای ماکرو بنچمارک NOT-PROFILEABLE در API 31+ حذف شد و از بررسی نمایه در دستگاه‌های ریشه‌دار eng/userdbug صرفنظر کرد. ( I2abac , b/291722507 )
  • هنگام استفاده از Dex Layout Optimizations، قوانین نمایه راه اندازی نیز اکنون به عنوان قوانین نمایه پایه در نظر گرفته می شوند. ( aosp/2684246 , b/293889189 )

نسخه 1.2.0-beta02

26 جولای 2023

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

تغییرات API

  • APIهای آزمایشی برای معیارها و پیکربندی سفارشی 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

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 حاوی این commit ها است.

تغییرات API

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

رفع اشکال

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

نسخه 1.2.0-alpha15

7 ژوئن 2023

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

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

  • MemoryUsageMetric آزمایشی برای ردیابی میزان استفاده از حافظه یک برنامه هدف اضافه شده است. ( I56453 , b/133147125 , b/281749311 )
  • با PerfettoTrace.record پشتیبانی از تنظیمات Perfetto کاملا سفارشی اضافه کنید ( 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 tracing را در dryRunMode غیرفعال کنید تا عملکرد را به میزان قابل توجهی بهبود ببخشید، زیرا اینها بیشتر زمان اجرا بودند. ( Ie4f7d )
  • پشتیبانی از نمونه برداری پشته تماس در Macrobenchmarks با استفاده از آرگومان های تست ابزار دقیق 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 حاوی این commit ها است.

رفع اشکال

  • فریم‌های نادیده‌گرفتن 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 حاوی این commit ها است.

تغییرات API

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

نسخه 1.2.0-alpha12

22 مارس 2023

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

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

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

تغییرات API

  • پشتیبانی از ردیابی Perfetto در 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 حاوی این commit ها است.

رفع اشکال

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

نسخه 1.2.0-alpha10

22 فوریه 2023

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

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

  • در اندروید 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 حاوی این commit ها است.

رفع اشکال

  • ارسال None به androidx.benchmark.enabledRules arg ابزار دقیق برای غیرفعال کردن همه معیارها / تولید نمایه پایه فعال شد. ( I3d7fd , b/258671856 )
  • تصحیح ضبط PerfettoTrace در ماژول‌های برنامه (یعنی فایل‌های APK آزمایشی بدون ابزار دقیق) ( I12cfc )
  • ترتیب آرگومان کشش adb نمایه خط پایه ثابت در خروجی استودیو ( I958d1 , b/261781624 )
  • Arm emulator api 33 اکنون در هنگام تلاش برای اجرای یک macrobenchmark به درستی به عنوان چنین شناخته می شود و هشدار را به درستی چاپ می کند. ( 69133b , b/262209591 )
  • رد شدن از بررسی سطح باتری دستگاه‌های بدون باتری در Macrobenchmark ( fe4114 , b/232448937 )

نسخه 1.2.0-alpha08

7 دسامبر 2022

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

تغییرات API

  • APIهای آزمایشی جدید PerfettoTrace.record {} و PerfettoTraceRule برای ثبت ردیابی Perfetto (همچنین به عنوان System Traces) به عنوان بخشی از یک آزمایش برای بازرسی رفتار و عملکرد تست اضافه کرد. ( I3ba16 )
  • BaselineProfileRule اکنون یک گزاره فیلتر را به جای لیستی از پیشوندهای بسته می پذیرد. این به تست کنترل کامل روی فیلتر کردن می دهد. ( I93240 )
  • یک API آزمایشی BaselineProfileRule.collectStableBaselineProfile اضافه کنید که منتظر می ماند تا یک نمایه خط پایه برای تکرار N پایدار شود. ( I923f3 )
  • قابلیت تعیین پیشوند نام فایل خروجی را هنگام ایجاد نمایه های خط پایه با استفاده از BaselineProfileRule اضافه کنید. ( I7b59f , b/260318655 )

رفع اشکال

  • ایمنی نوشتن خروجی فایل را بهبود ببخشید، که باید از عدم نوشتن/ضمیمه نشدن فایل‌های خروجی به‌ویژه در API 21/22 جلوگیری کند. ( If8c44 , b/227510293 )
  • خروجی ردیابی simpleperf را برای ایجاد و قرار دادن صحیح فایل برطرف کنید. این همچنین باید به طور کلی مشکلاتی را که در آن یک فایل به‌طور ناموفق توسط gradle کشیده می‌شود، برطرف کند. ( I12a1c , b/259424099 )
  • پیام خطای نصب کننده پروفایل را که زمانی که نصب کننده پروفایل خیلی قدیمی است چاپ می شود، بهبود دهید. اکنون به شما می گوید که به جای اینکه بگویید پشتیبانی نمی شود، نسخه profileinstaller (1.2.1) را برای اندازه گیری نمایه های پایه در API 31 تا 33 به روز کنید. ( Ia517f , b/253519888 )
  • رفع چندین خطای فرمان پوسته یک پیغام خطا چاپ مورد نیاز API <=23، از جمله ناموفق راه اندازی باینری ضبط پرفتو و خرابی های ضبط ردیابی ( 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

9 نوامبر 2022

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

تغییرات API

  • PowerMetric API را برای اندازه گیری انرژی و توان در Macrobenchmarks اضافه می کند. ( 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 کار می کند. با استفاده از forceEnableAppTracing در برنامه هدف، به سطوح پایین تر API برگردید. ( Id7b68 , b/231455742 )

رفع اشکال

  • ایمنی تمام دستورات پوسته داخلی با اعتبارسنجی همه خروجی/خطاها بهبود یافته است. ( I5984d , b/255402908 , b/253094958 )
  • دستگاه را در دستور adb pull نمایه پایه مشخص کنید، بنابراین اگر چندین دستگاه متصل هستند (حداکثر یک شبیه ساز) می توان دستور pull را به سادگی کپی کرد ( I6ac6c ، b/223359380 )
  • اگر apk تست 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 دیگر نیازی به روت در Android 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 ها است.

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

  • برای توسعه سریع‌تر محلی و اعتبارسنجی اتوماسیون برنامه (مثلاً در ارسال پیش‌فرض)، پشتیبانی از آرگومان ابزار dryRunMode.enable به ماکرو بنچمارک (که قبلاً در میکرو موجود است) اضافه کنید. این کار تکرارها را به 1 لغو می کند، از کامپایل صرف نظر می کند، همه خطاهای پیکربندی را سرکوب می کند و خروجی فایل json. اندازه گیری را غیرفعال می کند. ( Ib51b4 , b/175149857 )

    در خط فرمان Gradle:

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

    در build.gradle:

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

رفع اشکال

  • StartupTimingMetric ثابت کرد تا دیگر نیازی به راه‌اندازی فعالیت‌های اندازه‌گیری شده از طریق MacrobenchmarkScope.startActivityAndWait() نباشد. این بدان معناست که این معیار می‌تواند راه‌اندازی‌ها را از طریق اعلان‌ها، Context.startActivity() ، پیمایش مبتنی بر فعالیت درون برنامه‌ای، یا دستورات پوسته دریافت کند. ( 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 برای 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 ها است.

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

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

    به عنوان مثال در build.gradle ماکرو بنچمارک:

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

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

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

تغییرات API

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

رفع اشکال

  • مشکلی که در آن روش های کامپایل شده به درستی بین هر بنچمارک ماکرو در ساخت های روت نشده بازنشانی نمی شدند، برطرف شد. این متأسفانه مستلزم نصب مجدد apk در هر تکرار است که داده های برنامه را برای هر معیار ماکرو پاک می کند. ( I31c74 , b/230665435 )
  • رفع خرابی ضبط ردیابی در 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 حاوی این commit ها است.

رفع اشکال

  • رفع 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 )

  • سرعت تکرار Macrobenchmark را با بهینه سازی دستورات Shell مورد استفاده در زیر هود بهبود دهید. ( aosp/2086023 , b/231323582 )

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

نسخه 1.1.0-rc02

11 مه 2022

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

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

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

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

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

    به عنوان مثال در build.gradle ماکرو بنچمارک:

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

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

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

    به عنوان مثال در build.gradle ماکرو بنچمارک:

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

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

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

نسخه 1.1.0-rc01

20 آوریل 2022

androidx.benchmark:benchmark-*:1.1.0-rc01 منتشر شد. نسخه 1.1.0-rc01 حاوی این 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 )
  • مشکلی را برطرف کرد که در آن Macrobenchmarks نمی‌تواند معیارهای راه‌اندازی را هنگام استفاده از StartupMode.COLD جمع‌آوری کند. ( aosp/2012227 b/218668335 )

نسخه 1.1.0-beta04

23 فوریه 2022

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

رفع اشکال

  • معیارهای از دست رفته در Android 10 و NoSuchElementException ناشی از عدم ثبت صحیح نام فرآیندها در ردیابی را برطرف کنید. ( Ib4c17 , b/218668335 )

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

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

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

  • قوانین نمایه خط پایه را برای هدف قرار دادن Android 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 تغییر نام داد تا مشخص شود که این مدت زمان هستند، نه مُهر زمانی، و برای مطابقت با پیشوندها. ( I0eba3 , b/216337830 )

نسخه 1.1.0-beta02

26 ژانویه 2022

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

رفع اشکال

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

نسخه 1.1.0-beta01

12 ژانویه 2022

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

رفع اشکال

  • آرگومان نمایه ساز را رفع می کند که نادیده گرفته می شود. ( I37373 , b/210619998 )
  • CompliationModes منسوخ شده حذف شد ( I98186 , b/213467659 )
  • برای وضوح، arg نمایه خط پایه CompilationMode.Partial را به enum تغییر داد. ( ID67ea )

نسخه 1.1.0-alpha13

15 دسامبر 2021

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

تغییرات API

  • System Tracing کم سربار را به خروجی microbench در Android Q (API 29+) اضافه کنید. توجه داشته باشید که در حال حاضر ردیابی سفارشی (از طریق android.os.Trace یا androidx.tracing Jetpack API) برای جلوگیری از تأثیرگذاری بر نتایج، ثبت نمی شود. این ردیابی باید در تشخیص بی ثباتی، به ویژه از منابع خارج از معیار، مفید باشد. ( I298be , b/205636583 , b/145598917 )
  • CompilationModes به سه کلاس - Full، None، Partial شفاف کنید. قبلاً آنها به طور متناقض بر اساس آرگومان های کامپایل (که اکنون به عنوان جزئیات پیاده سازی در نظر می گیریم) و ویژگی ها نامگذاری می شدند. این باعث می‌شود که مبادلات، ترکیب‌های بالقوه و رفتار در نسخه‌های پلتفرم واضح‌تر شود. ( I3d7bf , b/207132597 )
  • راه‌اندازی و اندازه‌گیری اکنون همیشه به ترتیب جفت هستند. اکنون می‌توانید نام بسته و تکرار را پرس و جو کنید (اگرچه ممکن است تکرار در سناریوهای گرم کردن خاصی null باشد). ( Id3b68 , b/208357448 , b/208369635 )

رفع اشکال

  • CompilationMode.Speed ثابت شد. سرعت اشتباه به عنوان None در نظر گرفته شد ( I01137 )

نسخه 1.1.0-alpha12

17 نوامبر 2021

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

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

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

رفع اشکال

  • دستگاه را در هر تکرار بیدار کنید، تا اطمینان حاصل شود که رابط کاربری قابل آزمایش است - باید صفحه قفل غیرفعال باشد. ( Ibfa28 , b/180963442 )
  • خرابی های متعدد را در حالت پروفایل StackSampling در شبیه سازها و دستگاه های روت نشده برطرف می کند ( Icdbda , b/202719335 )
  • خواب 0.5 ثانیه در پایان هر تکرار حذف شد - اگر معیارهای گمشده با این تغییر را مشاهده کردید، لطفاً یک اشکال را ثبت کنید. ( Iff6aa )
  • کاهش احتمال کاهش داده‌ها و کاهش سربار حافظه ناشی از ردیابی ( Id2544 ، b/199324831 ، b/204448861 )
  • با جابجایی به فرمت ذخیره سازی فشرده، اندازه ردیابی را تا 40٪ کاهش دهید. ( ID5fb6 , b/199324831 )
  • پیاده سازی معیارهای راه اندازی به روز شد تا همیشه در انتهای رندرید پایان یابد. این در بین نسخه‌های پلتفرم سازگارتر خواهد بود و به اندازه‌گیری‌های درون برنامه‌ای نزدیک‌تر خواهد بود. ( IC6b55 )

نسخه 1.1.0-alpha11

3 نوامبر 2021

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

تغییرات API

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

نسخه 1.1.0-alpha10

27 اکتبر 2021

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

تغییرات API

  • Backport StartupTimingMetric برای بازگشت به API 23. این پیاده‌سازی جدید همچنین گزارشFullyDrawn() را بهتر مدیریت می‌کند تا منتظر شود تا محتوای مربوطه ارائه شود. ( If3ac9 , b/183129298 )
  • JvmOverloads به چندین روش MacrobenchmarkScope برای تماس گیرندگان جاوا اضافه شد. ( I644fe , b/184546459 )
  • تابع جایگزین MacrobenchmarkRule.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 حاوی این commit ها است.

رفع اشکال

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

نسخه 1.1.0-alpha08

29 سپتامبر 2021

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

تغییرات API

  • ماکرو بنچمارک‌های پیمایشی را فعال کنید تا به API 23 برگردند ( If39c2 , b/183129298 )
  • نوع جدیدی از معیارهای نمونه برداری شده را به خروجی UI و JSON اضافه کنید، با تمرکز بر صدک های چند نمونه در هر تکرار. ( I56247 , b/199940612 )
  • در سراسر کتابخانه‌های معیار به معیارهای ممیز شناور بروید (که در رابط کاربری Studio کوتاه شده‌اند). ( I69249 , b/197008210 )

نسخه 1.1.0-alpha07

1 سپتامبر 2021

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

تغییرات API

  • حداقل API را به 21 افزایش داد تا نشان دهنده پایین ترین سطح API مورد نظر برای پشتیبانی در آینده باشد. حداقل API فعلی پشتیبانی شده همچنان از طریق RequiredApi() منتقل می شود و در حال حاضر 29 است ( I440d6 , b/183129298 )

رفع اشکال

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

نسخه 1.1.0-alpha06

18 آگوست 2021

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

تغییرات API

  • آرگومان ابزار دقیق androidx.benchmark.iterations اضافه شد تا امکان نادیده گرفتن دستی تعداد تکرار هنگام آزمایش/پروفایل کردن به صورت محلی فراهم شود. ( 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

  • startActivityAndWait را برای فراخوانی راه‌اندازی از طریق am start تغییر داد، که زمان هر تکرار اندازه‌گیری را تقریباً 5 ثانیه کاهش می‌دهد و به قیمت دیگر از بسته‌بندی‌های هدف پشتیبانی نمی‌شود. ( I5a6f5 , b/192009149

رفع اشکال

  • تهاجمی تشخیص دریچه گاز حرارتی را کاهش دهید و در صورت تشخیص مکرر دریچه گاز، خط پایه را دوباره محاسبه کنید. ( I7327b )
  • FrameTimingMetric را برای کار بر روی Android S بتا ( Ib60cc , b/193260119 ) رفع می‌کند.
  • برای پشتیبانی بهتر از CompilationMode.BaselineProfile از یک EmptyActivity استفاده کنید تا برنامه مورد نظر را از حالت توقف اجباری خارج کنید. ( Id7cac , b/192084204 )
  • پسوند فایل ردیابی به .perfetto-trace تغییر کرد تا با استاندارد پلت فرم مطابقت داشته باشد. ( I4c236 , b/174663039 )
  • StartupTimingMetric اکنون متریک "fullyDrawnMs" را برای اندازه‌گیری زمان تا زمانی که برنامه شما تکمیل رندر شود را به‌دست می‌آورد. برای تعریف این معیار برای برنامه خود، هنگامی که محتوای اولیه شما آماده است، مانند زمانی که موارد فهرست اولیه شما از DB یا شبکه بارگیری می شود، Activity.reportFullyDrawn را تماس بگیرید. (روش reportFullyDrawn بدون بررسی نسخه ساخت در ComponentActivity در دسترس است). توجه داشته باشید که آزمون شما باید به اندازه کافی اجرا شود تا متریک را ثبت کند (startActivityAndWait منتظر reportFullyDrawn نمی ماند). ( If1141 , b/179176560 )
  • کاهش هزینه ضمیمه ابرداده رابط کاربری به ردیابی تا 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 ها است.

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

مصنوعات ماکرو بنچمارک اضافه شدند ( androidx.benchmark:benchmark-macro-junit4 و androidx.benchmark:benchmark-macro )

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

رفع اشکال

  • مشکل مجوزهای پوسته راه‌حلی با فهرست خروجی در Android 12 (توجه - ممکن است نیاز به به‌روزرسانی افزونه Android Gradle به 7.0.0 canary و Android Studio به Arctic Fox (2020.3.1) برای ادامه گرفتن فایل‌های خروجی در دستگاه‌های آسیب‌دیده داشته باشد. ( ICb039 )
  • پشتیبانی از کش پیکربندی در BenchmarkPlugin ( 6be1c1 , b/159804788 )
  • خروجی فایل ساده شده - به طور پیش فرض، در دایرکتوری که به requestLegacyExternalStorage=true نیاز ندارد ( 8b5a4d ، b/172376362 ) روشن است.
  • اخطارهای logcat چاپ کتابخانه را در مورد پیدا نکردن رشته JIT در نسخه‌های پلتفرمی که در آن وجود ندارد برطرف می‌کند. ( I9cc63 , b/161847393 )
  • رفع حداکثر فرکانس دستگاه خواندن. ( I55c7a )

نسخه 1.1.0-alpha01

10 ژوئن 2020

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

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

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

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

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

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

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

نسخه 1.0.0

نسخه بنچمارک 1.0.0

20 نوامبر 2019

androidx.benchmark:benchmark-common:1.0.0 ، androidx.benchmark:benchmark-gradle-plugin:1.0.0 و androidx.benchmark:benchmark-junit4:1.0.0 بدون تغییر نسبت به 1.0.0-rc01 منتشر شدند. نسخه 1.0.0 حاوی این تعهدات است .

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

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

از مسائل مربوط به پیکربندی ساخت و زمان اجرا جلوگیری می کند و عملکرد دستگاه را تثبیت می کند تا اطمینان حاصل شود که اندازه گیری ها دقیق و سازگار هستند. معیارها را مستقیماً در Android Studio یا در Continuous Integration اجرا کنید تا عملکرد کد را در طول زمان مشاهده کنید و از رگرسیون جلوگیری کنید.

ویژگی های عمده عبارتند از:

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

نسخه 1.0.0-rc01

23 اکتبر 2019

androidx.benchmark:benchmark-common:1.0.0-rc01 ، androidx.benchmark:benchmark-gradle-plugin:1.0.0-rc01 و androidx.benchmark:benchmark-junit4:1.0.0-rc01 منتشر شدند. نسخه 1.0.0-rc01 حاوی این commit ها است .

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

  • ردیابی systrace به معیارها اضافه شد

رفع اشکال

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

نسخه 1.0.0-beta01

9 اکتبر 2019

androidx.benchmark:benchmark-common:1.0.0-beta01 ، androidx.benchmark:benchmark-gradle-plugin:1.0.0-beta01 و androidx.benchmark:benchmark-junit4:1.0.0-beta01 منتشر شدند. نسخه 1.0.0-beta01 حاوی این تعهدات است .

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

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

رفع اشکال

  • اضافه شده androidx.annotation:android-experimental-lint وابستگی، به طوری که کد جاوا به درستی خطاهای پرز ایجاد می کند زمانی که API آزمایشی استفاده نمی شود، مشابه آنچه که توسط حاشیه نویسی آزمایشی Kotlin برای تماس گیرندگان Kotlin ارائه شده است.
  • اکنون به درستی استفاده از آرگومان ابزار additionalTestOutputDir را برای خروجی در Android Gradle Plugin 3.6 تشخیص می دهد تا بداند چه زمانی AGP کپی داده ها را مدیریت می کند.
  • فرکانس ساعت شناسایی نشده را در JSON برای چاپ صحیح -1 ( b/141945670 ) برطرف کنید.

نسخه 1.0.0-alpha06

18 سپتامبر 2019

androidx.benchmark:benchmark-common:1.0.0-alpha06 ، androidx.benchmark:benchmark-gradle-plugin:1.0.0-alpha06 و androidx.benchmark:benchmark-junit4:1.0.0-alpha06 منتشر شدند. نسخه 1.0.0-alpha06 حاوی این تعهدات است .

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

  • یک بررسی برای استفاده نادرست از بسته قدیمی برای دونده آزمایشی اضافه شد، که اکنون یک پیام خطای مفیدتر را ارائه می دهد.

API تغییر می کند

  • حاشیه نویسی آزمایشی ExperimentalAnnotationReport اکنون به درستی عمومی است. استفاده از آزمایشی BenchmarkState#report API اکنون به این حاشیه نیاز دارد

نسخه 1.0.0-alpha05

5 سپتامبر 2019

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

API تغییر می کند

  • BenchmarkState.reportData API اکنون آزمایشی علامت‌گذاری شده است

رفع اشکال

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

نسخه 1.0.0-alpha04

7 آگوست 2019

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

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

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

  • پلاگین Gradle
    • اکنون به طور خودکار پوشش آزمایشی را غیرفعال می کند و AndroidBenchmarkRunner را به طور پیش فرض تنظیم می کند ( b/138374050 )
    • پشتیبانی اضافه شده برای کپی داده های جدید مبتنی بر AGP، هنگام اجرای معیارها و هنگام استفاده از AGP 3.6+
  • فرمت JSON اضافه شده است
    • زمان اجرای آزمایشی معیار کل خروجی ( b/133147694 )
    • معیارهای @Parameterized که از یک رشته نام استفاده می‌کنند (برای مثال @Parameters(name = "size={0},depth={1}") ) اکنون نام پارامترها و مقادیر هر معیار را در خروجی JSON ( b/132578772 ) خروجی می‌دهند.
  • حالت اجرای خشک ( b/138785848 )
    • یک حالت "Dry run" برای اجرای هر حلقه معیار فقط یک بار اضافه شده است تا خطاها/خراش ها را بدون گرفتن اندازه گیری بررسی کنید. این می تواند مفید باشد، به عنوان مثال، برای اجرای سریع معیارها در presubmit برای بررسی اینکه خراب نیستند.

API تغییر می کند

  • ساختار ماژول تغییر کرده و کتابخانه را تقسیم کرده است ( b/138451391 )
    • benchmark:benchmark-junit4 شامل کلاس هایی با وابستگی به JUnit است: AndroidBenchmarkRunner و BenchmarkRule که هر دو به بسته androidx.benchmark.junit4 منتقل شده اند.
    • benchmark:benchmark-common شامل بقیه منطق، از جمله BenchmarkState API است.
    • این تقسیم به کتابخانه این امکان را می دهد که در آینده از محک زدن بدون JUnit4 API پشتیبانی کند
  • هشدارهای پیکربندی اکنون به عنوان خطا تلقی می‌شوند و آزمایش را خراب می‌کنند ( b/137653596 )
    • این کار برای تشویق بیشتر اندازه گیری های دقیق، به ویژه در CI انجام می شود
    • این خطاها را می توان با یک استدلال ابزار دقیق به هشدار کاهش داد. به عنوان مثال: -e androidx.benchmark.suppressErrors "DEBUGGABLE,LOW_BATTERY"

رفع اشکال

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

کمک های خارجی

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

نسخه 1.0.0-alpha03

2 جولای 2019

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

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

  • در گزارش کامل JSON، مدت زمان خواب را به دلیل فشار حرارتی در هر معیار نشان دهید

رفع اشکال

  • افزونه Gradle دیگر نباید بعد از افزونه های اندروید و بلوک اندروید اعمال شود
  • با استفاده از فضای ذخیره‌سازی محدوده، از گزارش‌های معیار در دستگاه‌های Android 10 پشتیبانی می‌کند

نسخه 1.0.0-alpha02

6 ژوئن 2019

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

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

API تغییر می کند

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

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

  • تشخیص دریچه گاز حرارتی از BenchmarkState.reportData API حذف شد ( b/132887006 )

رفع اشکال

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

نسخه 1.0.0-alpha01

7 مه 2019

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