Test porównawczy

dokładnie mierzyć wydajność kodu w Android Studio,
Ostatnia aktualizacja Wersja stabilna Wersja kandydująca Wersja Beta Wersja alfa
11 grudnia 2024 r. 1.3.3 - - 1.4.0-alpha06

Deklarowanie zależności

Aby dodać zależność od Benchmark, musisz dodać do projektu repozytorium Google Maven. Więcej informacji znajdziesz w repozytorium Maven firmy Google.

Macrobenchmark

Aby użyć Macrobenchmark w projekcie, dodaj do pliku build.gradle modułu macrobenchmark te zależności:

Odlotowe

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

Kotlin

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

Mikrotest porównawczy

Aby użyć Microbenchmark w projekcie, dodaj do pliku build.gradle modułu microbenchmark te zależności:

Odlotowe

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

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

Kotlin

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

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

Biblioteka Microbenchmark zawiera też wtyczkę do Gradle, której można używać z modułem testów porównawczych. Ta wtyczka ustawia domyślne ustawienia konfiguracji dla modułu, testowa kopia wyjściowa na serwer, i zapewnia ./gradlew lockClocks zadanie.

Aby korzystać z tej wtyczki, umieść ten wiersz w bloku „wtyczki” na najwyższym poziomie Plik build.gradle:

Odlotowe

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

Kotlin

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

Następnie zastosuj wtyczkę do pliku build.gradle modułu analizy porównawczej.

Odlotowe

plugins {
  id 'androidx.benchmark'
}

Kotlin

plugins {
    id("androidx.benchmark")
}

Opinia

Twoja opinia pomoże nam ulepszyć Jetpacka. Jeśli zauważysz nowe problemy lub masz pomysły na ulepszenie tej biblioteki, daj nam znać. Zanim utworzysz nowy problem, zapoznaj się z dotychczasowymi problemami w tej bibliotece. Możesz dodać swój głos do istniejącego problemu, klikając przycisk z gwiazdką.

Tworzenie nowego zgłoszenia

Więcej informacji znajdziesz w dokumentacji narzędzia Issue Tracker.

Wersja 1.4

Wersja 1.4.0-alpha06

11 grudnia 2024 r.

androidx.benchmark:benchmark-*:1.4.0-alpha06 został zwolniony. Wersja 1.4.0-alpha06 zawiera te komisy.

Zmiany w interfejsie API

  • Usunięto użycie @Language("sql") w PerfettoTraceProcessor.Session.query(), ponieważ podświetlanie i parsowanie w Studio jest uszkodzone. (Idc2fa, b/377733398)

Poprawki błędów

  • Biblioteka ta korzysta teraz z adnotacji JSpecify dotyczących nullowania, które są używane w zależności od typu. Deweloperzy Kotlina powinni używać tych argumentów kompilatora, aby wymusić prawidłowe użycie: -Xjspecify-annotations=strict, -Xtype-enhancement-improvements-strict-mode (I46810, b/326456246).
  • Poprawiono ArtMetric, aby zgłaszać wczytywanie klasy (a nie inicjalizację), oraz ulepszono dokumenty, aby wyjaśnić zachowanie w czasie wykonywania. (I9915c)
  • W przypadku wielu użytkowników na Androidzie polecenia roota wykonuj tylko na urządzeniach z odblokowanym dostępem do roota. (I88b44)

Wersja 1.4.0-alpha05

13 listopada 2024 r.

androidx.benchmark:benchmark-*:1.4.0-alpha05 został zwolniony. Wersja 1.4.0-alpha05 zawiera te komisy.

Poprawki błędów

  • Rozwiązaliśmy problem występujący w wersji interfejsu API 34 i nowszych, w którym funkcja CompilationMode.None() miała niespójną wydajność, która nie odzwierciedlała początkowej wydajności w najgorszym przypadku. Rozwiązanie to pozwala obejść zmianę platformy, która umożliwia stan kompilacji ART verify do częściowego kompilowania aplikacji (dotyczy to tylko ładowania klas) tuż po pierwszym uruchomieniu. (Ie48d0)
  • Rozwiązano problem, który powodował, że można było rejestrować (zwłaszcza krótkie) ścieżki, które nie raportowały pomiarów z wbudowanych danych Macrobenchmark, ponieważ nazwa procesu została obcięta w śladzie Peretto. Teraz macrobenchmark omija ten problem, wyszukując w wszystkich wbudowanych zapytaniach skróconą nazwę pakietu oprócz oczekiwanej nazwy pakietu. Pamiętaj, że niestandardowe implementacje TraceMetric lub inne bezpośrednie wywołania PerfettoSession.query mogą realizować to samo działanie, zmieniając w zapytaniu do Perfetta wartość process.name LIKE "$packageName" na (process.name LIKE "$packageName" OR process.name LIKE "$(packageName.takeLast(15))"). (I5bf01, b/377565760)

Wersja 1.4.0-alpha04

30 października 2024 r.

androidx.benchmark:benchmark-*:1.4.0-alpha04 został zwolniony. Wersja 1.4.0-alpha04 zawiera te komisy.

Nowe funkcje

  • (Wersja eksperymentalna) Włączanie generowania profilu bazowego i benchmarkowania aplikacji zainstalowanych przez użytkownika dodatkowego, np. dowolnej aplikacji na urządzeniach bez ekranu z Androidem Auto. Ta pomoc została przetestowana w niektórych scenariuszach, ale jeśli nie działa w Twoim przypadku, daj nam znać. (I9fcbe, b/356684617, b/373641155)

Poprawki błędów

  • W kompilacji porównawczej zawsze jest teraz zastępowana wartość isProfileable, a w kompilacji porównawczej i nonMinified (zbieranie profilu bazowego) – wartość isDebuggable. (I487fa, b/369213505)
  • Poprawiono wykrywanie kompilacji na niektórych urządzeniach fizycznych w wersjach starszych niż API 28 – dotyczy to funkcji json context.compilationMode, a także zachowania funkcji androidx.benchmark.requireAot=true (której nieprawidłowe wywoływanie nie występuje już w tym przypadku) (Ic3e08, b/374362482)
  • W przypadku danych CpuEventCounter wyjątek, jeśli występują nieprawidłowe pomiary (np. instrukcje/cykle procesora==0) (I8c503)

Wersja 1.4.0-alpha03

16 października 2024 r.

androidx.benchmark:benchmark-*:1.4.0-alpha03 został zwolniony. Wersja 1.4.0-alpha03 zawiera te komity.

Zmiany w interfejsie API

  • Macrobenchmark: dodaje ArtMetric, którego można używać do sprawdzania pokrycia profilu lub ogólnej wydajności Android RunTime. Rejestruje liczbę i łączny czas trwania JIT, inicjalizowania klasy (gdzie dostępne) oraz weryfikacji klasy. Dodatkowo zmiany CaptureInfo obejmują opcjonalną wersję główną ART z domyślną. (I930f7)
  • Dodaj coefficientOfVariation do danych wyjściowych testów porównawczych w formacie JSON, aby pokazać stabilność w ramach danego testu porównawczego. (Ib14ea)

Poprawki błędów

  • Naprawiono błąd CollectBaselineProfileTask, gdy urządzenie AVD zawiera spacje. (Ia0225, b/371642809)
  • Przypuszczalne rozwiązanie problemu z błędami w wyjątkach StartupMode.COLD: Package <packagename> must not be running prior to cold start!. Teraz MacrobenchmarkScope.killProcess() (w tym ten, który jest wykonywany przed każdą iteracją i służy do implementacji zachowania StartupMode.COLD) będzie czekać, aż wszystkie procesy aplikacji przestaną działać. (I60aa6, b/351582215)
  • Rozwiązaliśmy problem, który powodował wyświetlanie błędu UNLOCKED_ w przypadku niektórych zrootowanych emulatorów. (Ic5117)
  • Biblioteka ta korzysta teraz z adnotacji JSpecify dotyczących nullowania, które są używane w zależności od typu. Deweloperzy Kotlina powinni używać tych argumentów kompilatora, aby wymusić prawidłowe użycie: -Xjspecify-annotations=strict, -Xtype-enhancement-improvements-strict-mode (I7104f, b/326456246).

Wersja 1.4.0-alpha02

2 października 2024 r.

androidx.benchmark:benchmark-*:1.4.0-alpha02 został zwolniony. Wersja 1.4.0-alpha02 zawiera te komity.

Zmiany w interfejsie API

  • Zadanie Gradle lockClocksunlockClocks zostały przeniesione do projektów porównawczych, zamiast być dostępne na najwyższym poziomie. Ta zmiana była konieczna, ponieważ nie ma niestety możliwości zarejestrowania tych działań jako działań najwyższego poziomu bez naruszania izolacji projektu. (I02b8f, b/363325823)

Poprawki błędów

  • BaselineProfileRule zbiera teraz profile aplikacji wieloprocesowych, sygnalizując każdemu uruchomionemu procesowi na końcu bloku, aby wygenerował profile. Jeśli kompilacja oparta na profilu nigdy nie znajdzie procesu, do którego można przesłać dane, kompilacja zakończy się niepowodzeniem, ponieważ nieoczekiwanie zawiera dane profilu. Dodatkowo dodaliśmy argument instrumentacji, który umożliwia kontrolowanie czasu oczekiwania na zrzut: androidx.benchmark.saveProfileWaitMillis (I0f519, b/366231469)
  • Z benchmarku 1.3.2: rozwiązano problem z Laboratorium Firebase (FTL), który uniemożliwiał pobieranie plików z wynikami z profilu bazowego lub testu makrobenchmarku z plugina Gradle do profilu bazowego. (I2f678, b/285187547)

Aby użyć FTL, zastosuj wtyczkę do modułu profilu podstawowego w bloku wtyczki:

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

a następnie skonfiguruj Laboratorium 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}")
          }
      }
  }

Utworzone urządzenie FTL musi też zostać dodane do rozszerzenia profilu podstawowego:

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

Wersja 1.4.0-alpha01

18 września 2024 r.

androidx.benchmark:benchmark-*:1.4.0-alpha01 został zwolniony. Wersja 1.4.0-alpha01 zawiera te komisy.

Nowa funkcja – statystyki uruchamiania aplikacji

  • W Macrobenchmark można włączyć wstępną wersję statystyk uruchamiania aplikacji. (09fae38)

Aby włączyć test porównawczy w przypadku startupu:

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

Następnie uruchomienie testu porównawczego uruchomienia spowoduje przeanalizowanie śladu pod kątem typowych problemów i wyświetlenie ich po danych w wyjściu testu Studio na karcie testu porównawczego, np.:

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

Ta funkcja jest nadal w trakcie tworzenia, a w przyszłości planujemy ulepszyć dokumentację i rozszerzalność. Zapraszamy do dzielenia się opiniami.

Nowe funkcje

  • Dodano właściwość gradle androidx.baselineprofile.suppressWarnings, aby stłumić wszystkie ostrzeżenia dotyczące profilu podstawowego. (314153a)
  • Dane mikrobenchmarków są teraz wyświetlane w śladach Peretto jako liczniki. (3214854)
  • Dodaj eksperymentalne skrypty do wyłączania JIT (wymaga uprawnień roota lub ponownego uruchomienia w czasie działania) oraz do resetowania stanu wydajności/testowania urządzenia. Obecnie nie są one publikowane jako zadania Gradle. (7c3732b)
  • Dodano argument testów porównawczych, aby pomijać testy podczas uruchamiania na emulatorze. Gdy włączona jest wersja automaticGenerationDuring, punkty odniesienia będą też uruchamiać generowanie profilu podstawowego. Jeśli używasz emulatorów, nie uda Ci się tego zrobić. Dzięki nowemu argumentowi skipBenchmarksOnEmulator możemy pominąć test. (0c2ddcd)
  • Zmień logikę włączania zdarzeń związanych z wydajnością, aby działała w interfejsie API 23 lub nowszym (2550048)

Zmiany w interfejsie API

  • Dotychczasowy eksperymentalny argument PerfettoConfig został przeniesiony z elementu MacrobenchmarkRule.measureRepeated() do nowego obiektu ExperimentalConfig.

Poprawki błędów

  • Zwiększ liczbę prób lockClocks.sh (99e9dac)
  • Nie twórz typów kompilacji nonMinified i benchmarków, jeśli już istnieją. Z powodu błędu, nawet jeśli typy kompilacji nonMinified i benchmark miały już swoje wersje, miały zostać ponownie utworzone. (e75f0a5)
  • Ignoruj nieoznaczające końca przedziały w wynikach TraceSectionMetric. (a927d20)
  • Ulepszono sprawdzanie emulatora, aby uwzględnić prefiks sdk_. (1587de8)
  • Pakiety, które nie są uruchomione, traktuj jako usunięte w FrameTimingGfxInfoMetric. (35cc79c)
  • Naprawiono błąd androidx.benchmark.cpuEventCounter, który powodował nieprawidłowe wartości zdarzeń innych niż Instruction. (06edd59)
  • Naprawić błąd resumeTiming/runWithTimingDisabled, aby zachować kolejność danych według priorytetu i znacznie ograniczyć wpływ wstrzymywania i wznawiania danych o niższym priorytecie na wyniki danych o wyższym priorytecie. Jeśli na przykład używasz liczników wydajności procesora za pomocą argumentu cpuEventCounter.enable, wartość timeNs nie jest już znacznie zmniejszana podczas pauzy lub wznowienia. (5de0968)

Wersja 1.3

Wersja 1.3.3

16 października 2024 r.

androidx.benchmark:benchmark-*:1.3.3 został zwolniony. Wersja 1.3.3 zawiera te komity.

Poprawki błędów

  • Poprawiono problem z CollectBaselineProfileTask, gdy urządzenie AVD zawiera spacje (Ia0225, b/371642809)

Wersja 1.3.2

2 października 2024 r.

androidx.benchmark:benchmark-*:1.3.2 został zwolniony. Wersja 1.3.2 zawiera te komitowane zmiany.

Poprawki błędów

  • Rozwiązano problem z Laboratorium Testów Firebase (FTL), który uniemożliwiał pobieranie plików wyników profilu podstawowego lub testu makrobenchmarku z wtyczki Gradle do profilu podstawowego. (I2f678, b/285187547)

Aby użyć FTL, zastosuj wtyczkę do modułu profilu podstawowego w bloku wtyczki:

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

a następnie skonfiguruj Laboratorium 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}")
          }
      }
  }

Urządzenie FTL utworzone w tym celu musisz też dodać do rozszerzenia profilu podstawowego:

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

Wersja 1.3.1

18 września 2024 r.

androidx.benchmark:benchmark-*:1.3.1 został zwolniony. Wersja 1.3.1 zawiera te komity.

Poprawki błędów

  • Dodano właściwość gradle androidx.baselineprofile.suppressWarnings, aby pomijać wszystkie ostrzeżenia dotyczące profilu podstawowego (I7c36e, b/349646646).
  • Poprawiono wtyczkę Gradle do profilu podstawowego, aby używała istniejących już plików nonMinified…benchmark…, jeśli zostały utworzone przez aplikację, zamiast tworzyć opakowania. (Ia8934, b/361370179)
  • Naprawiono problem z java.lang.AssertionError: ERRORS (not suppressed): EMULATOR, gdy automaticGenerationDuringBuild jest włączony na emulatorach. Zamiast tego do pominięcia testu służy nowy argument. (If3f51, b/355515798)
  • Kompilacja uproszczona mikrobenchmarków – zachowaj podklasy org.junit.runner.notification.RunListener w bibliotece testów porównawczych Proguard (Ic8ed5, b/354264743)
  • Zmień TraceSectionMetric na Ignoruj niekończące się przedziały. Wcześniej uważano, że mają one czas trwania -1, np. podczas sumowania lub znajdowania minimalnego czasu trwania. (If74b7)
  • Rozwiązaliśmy problem w wersji FrameTimingGfxInfoMetric, który powodował, że uruchomienie danych powodowało awarię, jeśli proces nie był już uruchomiony. (I6e412)

Wersja 1.3.0

21 sierpnia 2024 r.

androidx.benchmark:benchmark-*:1.3.0 został zwolniony. Wersja 1.3.0 zawiera te komity.

Zmiany w mikrobenchmarkach od wersji 1.2.0

  • Śledzenie metod jest domyślnie włączone w mikrobenchmarkach na większości urządzeń.
    • Śledzenie metody jest wykonywane w osobnej fazie po pomiarach. Dzięki temu dokładne pomiary i ślady metody są generowane w ramach jednego uruchomienia testu porównawczego.
    • Śledzenie metod w niektórych wersjach systemu Android i ART będzie wpływać na późniejsze fazy pomiaru. W tych wersjach śledzenie metod jest domyślnie wyłączone, a w wyjściu Studia wyświetla się ostrzeżenie.
  • Testy porównawcze i błędy ANR w głównym wątku
    • Dodano measureRepeatedOnMainThread dla benchmarków wątków interfejsu użytkownika (np. tych, które współpracują z interfejsami tworzenia lub wyświetlania) w celu uniknięcia ANR podczas działania przez wiele sekund.
    • Ścieżki metod są pomijane, jeśli przewiduje się, że przekroczą one termin unikania ANR. Aby wyłączyć to zachowanie, ustaw wartość androidx.benchmark.profiling.skipWhenDurationRisksAnr na Fałsz (nie zalecamy tego w przypadku przebiegów CI, ponieważ błędy ANR mogą powodować problemy podczas długich przebiegów CI).
  • Minifikacja
    • Wbudowane reguły Proguarda poprawiające mikrotestowanie z włączoną kompresją
    • Kompilacja wstępna/R8 w module biblioteki wymaga wersji AGP 8.3 i może być włączona za pomocą android.buildTypes.release.androidTest.enableMinification w Twoim build.gradle
    • Dodano eksperymentalny interfejs API BlackHole.consume(), aby zapobiec eliminacji nieużywanego kodu (If6812, b/286091643).
  • Dane
    • Eksperymentalna funkcja licznika zdarzeń procesora (dane z perf_event_open, która wymaga uprawnień root w większości wersji platformy), dostęp przez InstrumentationArgument androidx.benchmark.cpuEventCounter.enable (można ustawić jako true), a androidx.benchmark.cpuEventCounter.events można ustawić np. jako (Instructions,CpuCycles). Ta funkcja powinna być obsługiwana na niektórych emulatorach userdebug, ale nie została przetestowana na wszystkich dostępnych emulatorach

Zmiany w makrobenchmarku od wersji 1.2.0

  • Przebudowa śledzenia metod w przypadku testów porównawczych na dużą skalę.
    • Teraz ślady metod są ograniczone do czasu trwania measureBlock i mogą obejmować wiele sesji, jeśli proces jest uruchamiany wielokrotnie.
    • Wcześniej śledzenie metod działało tylko w przypadku testów porównawczych StartupMode.COLD, a nic nie rejestrowało się w przypadku testów measureBlocks, które nie uruchamiały ponownie procesu docelowego.
    • Naprawiono błąd powodujący czyszczeniu śladów metod w makrobenchmarkach, dzięki czemu ślady metod powinny być w pełni uchwycone i prawidłowe nawet na wolniejszych urządzeniach. (I6349a, b/329904950)
  • Prawidłowo zrzutować profil ART podczas poszczególnych iteracji warmUp, gdy proces jest zabijany, aby pomiary CompilationMode.Partial(warmup=N) były dokładniejsze. (I17923)
  • Komunikat o błędzie podczas przesyłania Shadera
    • Dodano sugestie dotyczące debugowania, aby wyświetlać komunikat o niepowodzeniach podczas przesyłania obrazu.
    • Dodaj 2 argumenty pomiarów, które umożliwiają zastąpienie zachowania odrzucania shaderów, aby rozwiązać problemy z zawieszaniem się aplikacji podczas testów porównawczych bez ProfileInstaller 1.3:
      • androidx.benchmark.dropShaders.enable=true/false : można go użyć, aby pominąć wszystkie opuszczenia shadera (w tym te, które występują podczas uruchamiania StartupMode.Cold), zwłaszcza podczas testowania porównawczego aplikacji, które nie używają jeszcze ProfileInstaller 1.3.
      • androidx.benchmark.dropShaders.throwOnFailure=true/false : można go użyć, aby tolerować błędy podczas próby usunięcia shaderów, na przykład podczas testowania aplikacji bez profileinstaller 1.3 (I4f573).
  • Dodano eksperymentalną wersję MacrobenchmarkRule#measureRepeated, która korzysta z niestandardowego PerfettoConfig w celu pełnego dostosowania rejestrowania śladów Perfetta. Pamiętaj, że nieprawidłowo skonfigurowane konfiguracje mogą powodować błędy w wbudowanych klasach danych. (Idfd3d, b/309841164, b/304038384)
  • Aby zmniejszyć zakłócenia, przed uruchomieniem testu porównawczego Macrobenchmark anuluj zadania dexopt wykonywane w tle. (I989ed)
  • Makrotest oczekuje teraz przez 1 sekundę, aż aplikacja docelowa opróżni profil ART (wcześniej oczekiwał przez 500 ms). (I85a50, b/316082056)
  • Rewizja sekcji ścieżki „TraceSectionMetric”
    • Uwaga: TraceSectionMetric poniższe zmiany mogą mieć wpływ na dane wyjściowe w ramach CI i mogą powodować przerwy w przetwarzaniu lub zakłócenia.
    • Domyślną wartością jest teraz suma, ponieważ większość zastosowań tych danych dotyczy powtarzających się zdarzeń, a w takich przypadkach dane są odrzucane.
    • Zmiany w celu zwiększenia możliwości personalizacji i dodania nowych trybów
    • Nazwy trybów są teraz umieszczane w nazwie danych wyjściowych (w Studio i w pliku JSON).
    • Obsługuje teraz wycinki utworzone za pomocą funkcji Trace.{begin|end}AsyncSection.
  • Dane
    • Power - Added PowerMetric.deviceSupportsHighPrecisionTracking, PowerMetric.deviceBatteryHasMinimumCharge() and PowerMetric.deviceSupportsPowerEnergy()
    • Zmieniono nazwę Metric.getResult na getMeasurements, aby odpowiadała typowi zwracania
    • Dodano etykiety log.w / exception do wszystkich błędów wykrywania podczas uruchamiania. Nie zmienia to bieżącego zachowania (niektóre błędy są zgłaszane, a inne nie są wykrywane), ale ułatwia zrozumienie. Zazwyczaj te, które Log.w() i nie zwracają danych o uruchamianiu, to te, w których brakuje zdarzeń poza kadrem. Wyjątki są zgłaszane, gdy wykryto uruchamianie, z wyjątkiem informacji o czasie trwania kadru (z kadroków UI/RT). (Id240f, b/329145809)
    • Dodano pomiar frameCount do FrameTimingMetric, aby ułatwić wykrywanie scenariuszy, w których pomiary się zmieniają z powodu zmiany liczby wygenerowanych klatek (dodano nowe animacje, rozwiązano problemy z unieważnianiem). (I1e5aa)
    • Wyjaśnienie, że frameOverrunMs to preferowany rodzaj danych do śledzenia, gdy jest dostępny w dokumentach, oraz uzasadnienie. (I18749, b/329478323)
    • Rozwiązanie problemu polegającego na tym, że nieoznaczone ramki na początku i na końcu ścieżki mogły być ze sobą sparowane, co powodowało nieprawidłowe raportowanie jako pojedyncza bardzo długa ramka. (I39353, b/322232828)
    • Poprawiono błąd FrameTimingMetric, który występował, gdy nie były generowane ramki, oraz zawsze wyprowadzano link do śledzenia, gdy nie udało się przeanalizować danych, aby ułatwić diagnozowanie problemu. (I956b9)
    • Naprawiono błąd FrameTimingMetric, który powodował awarię podczas analizowania identyfikatora ramki, zwłaszcza na niektórych urządzeniach OEM. (Ia24bc, b/303823815, b/306235276)
    • Zmniejszono rygoryzm weryfikacji w FrameMetrics i dodano więcej szczegółów do komunikatów o błędach. (Iadede)

Zmiany w zbieraniu profilu odniesienia i w pluginie Gradle od wersji 1.2.0

  • Maksymalna zalecana wersja AGP została zwiększona do 9.0.0-alpha01.
  • Upewnij się, że zadania mergeArtProfilemergeStartupProfile zawsze czekają na wygenerowanie profilu bazowego. (I623d6, b/343086054)
  • Po pomyślnym wygenerowaniu profilu podstawowego pojawi się podsumowanie zmian (I824c8, b/269484510).
  • Dodano DSL, aby wyłączyć ostrzeżenia (Ic4deb, b/331237001)
  • Poprawka, która zapewnia, że punkty odniesienia używają wygenerowanych profili podstawowych, gdy parametr automaticGenerationDuringBuild jest wyłączony (Ic144f, b/333024280)
  • Napraw przesłonięcia właściwości w pluginie BaselineProfile, aby umożliwić generowanie profilu bazowego i benchmarking podczas dostosowywania typu kompilacji nonMinified lub benchmarkowej. (Ib8f05, b/324837887)
  • Poprawka dotycząca uwzględniania profili bazowych bibliotek w AAR w wersjach starszych niż AGP 8.3.0-alpha15. (I1d2af, b/313992099)
  • Naprawiono adres URL wyjściowy profilu bazowego i profilu startowego na końcu zadania generowania. (I802e5, b/313976958)

Inne ważne zmiany od wersji 1.2.0

  • Przechwytywanie śladów
    • Zmniejszony błąd EXITCODE 2 podczas uruchamiania perfetto z błędu na zalogowane ostrzeżenie
    • Domyślnie włączyć śledzenie AIDL w benchmarkach(wymaga interfejsu API 28) (Ia0af2, b/341852305)
    • Domyślnie włączyć śledzenie tagów Portera w testach porównawczych. Umożliwia to rejestrowanie np. punktów śledzenia blokady aktywacji. (Icfe44, b/286551983)
    • Zwiększono czas oczekiwania na rozpoczęcie przechwytywania śladów, aby uniknąć awarii podczas uruchamiania śledzenia na wolniejszych urządzeniach (I98841, b/329145808)
    • Dodano publiczne interfejsy API PerfettoTraceProcessor.Session.queryMetrics z wersjami JSON, textproto i binarną wersją proto (nieodkodowaną). Umożliwiają one uzyskiwanie danych z uwzględnieniem funkcji dostępnych w TraceProcessor (I54d7f, b/304038382).
    • Włącz blokowanie rozpoczęcia w rekordzie śledzenia w Perfetto, aby zmniejszyć ryzyko braku danych na początku śledzenia. Obsługiwane tylko w Androidzie w wersji 33 lub nowszej (Ie6e41, b/310760059).
  • Dane wyjściowe w formacie JSON
    • Dodano dodatkowe informacje w kontekście testu porównawczego w wyniku w formacie JSON:
      • context.artMainlineVersion – wersja całkowita modułu głównego Art (jeśli jest obecny na urządzeniu, w przeciwnym razie -1)
      • context.build.id – równa się android.os.Build.ID
      • context.build.version.codename – równa się android.os.Build.VERSION.CODENAME.
      • context.build.version.abbreviatedCodename – odpowiada pierwszej literze nazwy kodowej wersji przedpremierowej (w tym w wersjach przeznaczonych do wydania) (Ie5020).
    • Dodano listę profilerOutput do danych wyjściowych w formacie JSON, aby ułatwić korzystanie z narzędzi do analizowania śladów (np.Perfeto, ślady metod). (I05ddd, b/332604449)
    • Dodano ostrzeżenie, gdy Android Test Orchestrator jest używany w modułach testów porównawczych, ponieważ spowoduje to wielokrotne zastępowanie plików wyjściowych w formacie JSON. (Ia1af6, b/286899049)
    • Wyrzuć, gdy nazwy plików są dłuższe niż 200 znaków, aby uniknąć niejasnych awarii podczas zapisywania lub dalszego przetwarzania plików. (I4a5ab)

Wersja 1.3.0-rc01

7 sierpnia 2024 r.

androidx.benchmark:benchmark-*:1.3.0-rc01 został zwolniony. Wersja 1.3.0-rc01 zawiera te zatwierdzenia.

Poprawki błędów

  • Rozwiązanie problemu polegającego na tym, że androidx.benchmark.cpuEventCounter zwraca nieprawidłowe wartości w przypadku zdarzeń innych niż Instruction (I7386a, b/286306579).
  • Popraw resumeTiming/runWithTimingDisabled, aby uwzględniał kolejność priorytetów danych, i znacznie ogranicz wpływ pauzy/wznowienia danych o niższym priorytecie na wyniki danych o wyższym priorytecie. Jeśli na przykład używasz liczników wydajności procesora za pomocą argumentu cpuEventCounter.enable, wartość timeNs nie jest już znacznie zmniejszana podczas pauzy lub wznowienia. (I39c2e, b/286306579, b/307445225)
  • Zmniejszenie prawdopodobieństwa, że próbkowanie stosu spowoduje przekroczenie limitu czasu głównego wątku przez measureRepeatedOnMainThread, poprzez przeniesienie konwersji próbkowania stosu z głównego wątku. (I487a8, b/342237318)
  • Usunięto ręczne określanie dostępu do nowych interfejsów API platformy, ponieważ odbywa się to automatycznie za pomocą modelowania interfejsu API podczas korzystania z R8 z AGP 7.3 lub nowszym (np. R8 w wersji 3.3) oraz we wszystkich wersjach kompilacji podczas korzystania z AGP 8.1 lub nowszej (np. D8 w wersji 8.1). Klienci, którzy nie korzystają z AGP, powinni zaktualizować D8 do wersji 8.1 lub nowszej. Więcej szczegółów znajdziesz w tym artykule. (I9496c, b/345472586)
  • Dodano sprawdzanie wersji agp, aby wysyłać nazwę pakietu jako argument instr. Przed wersją AGP 8.4.0 nazwy pakietów aplikacji docelowych nie można było wysyłać do aplikacji do testowania za pomocą argumentów testowania. (0c72a3f)

Wersja 1.3.0-beta02

10 lipca 2024 r.

androidx.benchmark:benchmark-*:1.3.0-beta02 został zwolniony. Wersja 1.3.0-beta02 zawiera te zatwierdzenia.

Poprawki błędów

  • Gracefully handle EXITCODE 2 when starting Perfetto to log a warning, but proceed.

Wersja 1.3.0-beta01

12 czerwca 2024 r.

androidx.benchmark:benchmark-*:1.3.0-beta01 został zwolniony. Wersja 1.3.0-beta01 zawiera te zatwierdzenia.

Zmiany w interfejsie API

  • Zmieniono nazwę MethodTracing.affectsMeasurementOnThisDevice na AFFECTS_MEASUREMENT_ON_THIS_DEVICE, aby zachować spójność. (I1bdfa)
  • Dodano eksperymentalny interfejs API BlackHole.consume(), aby zapobiec eliminowaniu martwego kodu w mikrotestach. (If6812, b/286091643)
  • Testy mikrobenchmarków będą teraz prawidłowo uruchamiane, aby zapobiec zakłócaniu pomiarów przez śledzenie metod. Występuje to na niektórych urządzeniach, gdy śledzenie metody jest wymuszone (za pomocą argumentów instrumentacji lub MicrobenchmarkConfig), a po śledzeniu metody podejmowane jest próby pomiaru. Dotyczy to urządzeń z interfejsem API 26–30 lub określonymi wersjami głównego modułu ART, które są podatne na te zakłócenia. Można je wykryć w czasie działania za pomocą funkcji ProfilerConfig.MethodTracing.affectsMeasurementOnThisDevice. (Iafb92, b/303660864)

Poprawki błędów

  • Zwiększono zalecaną maksymalną wersję AGP do 9.0.0-alpha01. (I5bbb0)
  • Dodano tryb kompilacji do kontekstu porównywania (If5612, b/325512900).
  • Domyślnie włącz śledzenie AIDL (wymaga interfejsu API 28) (Ia0af2, b/341852305)
  • Dodano dodatkowe informacje w kontekście testu porównawczego w wyniku w formacie JSON:
    • context.artMainlineVersion – wersja całkowita modułu głównego Art (jeśli jest obecny na urządzeniu, w przeciwnym razie -1)
    • context.build.id – równa się android.os.Build.ID
    • context.build.version.codename – równa się android.os.Build.VERSION.CODENAME
    • context.build.version.abbreviatedCodename – odpowiada pierwszej literze nazwy kodowej wersji przedpremierowej (nawet w przypadku wersji opublikowanych) (Ie5020).
  • Poprawka StackSampling uwzględniająca androidx.benchmark.profiling.sampleDurationSeconds (Ib1d53)
  • Zmień makro->zależność wspólna na api(), aby ułatwić korzystanie z funkcji PerfettoTracePerfettoConfig. (Icdae3, b/341851833)
  • Upewnij się, że zadania mergeArtProfilemergeStartupProfile zawsze czekają na wygenerowanie profilu bazowego. (I623d6, b/343086054)
  • Przy podejmowaniu decyzji o włączeniu wariantu weź pod uwagę jego stan. (I5d19e, b/343249144)
  • Zwiększono domyślny czas oczekiwania na rozpoczęcie przetwarzania ścieżki przez perfetto. (I87e8c, b/329145808)

Wersja 1.3.0-alpha05

14 maja 2024 r.

androidx.benchmark:benchmark-*:1.3.0-alpha05 został zwolniony. Wersja 1.3.0-alpha05 zawiera te komity.

Poprawki błędów

  • Wyjątek o bardziej czytelnej treści, gdy wskaźnik macrobench zwraca wartości zerowe we wszystkich iteracjach (Iab58f, b/314931695)
  • Dodano dodatkowe reguły obejścia do reguł Proguarda w microbenchu, w tym obsługę reguł listenera i innych obserwowanych ostrzeżeń / błędów. (I14d8f, b/329126308, b/339085669)
  • Śledzenie metody jest wykonywane w ramach osobnej fazy podczas testu porównawczego Macrobenchmark i nie wpływa już na pomiary. (If9a50, b/285912360, b/336588271)
  • Dodano dodatkowe sugestie debugowania, aby usunąć komunikat o błędzie podczas przesyłania obrazu shadera. (I5efa6, b/325502725)

Wersja 1.3.0-alpha04

1 maja 2024 r.

androidx.benchmark:benchmark-*:1.3.0-alpha04 został zwolniony. Wersja 1.3.0-alpha04 zawiera te komity.

Zmiany w interfejsie API

  • Dodano eksperymentalną wersję MacrobenchmarkRule#measureRepeated, która korzysta z niestandardowego PerfettoConfig w celu pełnego dostosowania rejestrowania śladów Perfetta. Pamiętaj, że nieprawidłowo skonfigurowane konfiguracje mogą powodować błędy w wbudowanych klasach danych. (Idfd3d, b/309841164, b/304038384)
  • Zmień nazwę PowerMetric.deviceSupportsPowerEnergy na PowerMetric.deviceSupportsHighPrecisionTracking, aby zwiększyć przejrzystość (I5b82f)
  • Dodaliśmy opcje PowerMetric.deviceBatteryHasMinimumCharge()PowerMetric.deviceSupportsPowerEnergy(), aby umożliwić zmianę lub pominięcie testów porównawczych na podstawie możliwości pomiaru zużycia energii przez urządzenie. (I6a591, b/322121218)

Poprawki błędów

  • Dodano porównanie z poprzednim profilem bazowym (I824c8, b/269484510).
  • Dodano DSL, aby wyłączyć ostrzeżenia (Ic4deb, b/331237001)
  • Zmiana wyjątku do logowania informacji, gdy warianty porównawcze są wyłączone (I8a517, b/332772491)
  • Uprość tworzenie śladów metody w przypadku testu porównawczego makro, który jest ograniczony do czasu trwania rzeczywistego measureBlock(). Wcześniej uruchamiał się on w momencie uruchomienia docelowego procesu i obsługiwał tylko zimne uruchomienia (Iee85a, b/300651094).
  • Zapobieganie awariom, gdy procesor śledzenia perfetto uruchamia się powoli (I98841, b/329145808)

Wersja 1.3.0-alpha03

17 kwietnia 2024 r.

androidx.benchmark:benchmark-*:1.3.0-alpha03 został zwolniony. Wersja 1.3.0-alpha03 zawiera te komity.

Nowe funkcje

  • Dodaje publiczne interfejsy API PerfettoTraceProcessor.Session.queryMetrics z wersjami w formacie JSON, textproto i binarnym (nieodkodowanym) proto. Te dane umożliwiają wysyłanie zapytań do danych zintegrowanych z TraceProcessor (I54d7f, b/304038382).
  • Dodano profilerOutput do wyjściowego pliku JSON, aby ułatwić korzystanie z narzędzi do analizowania śladów (np. perfetto, ślady metod). (I05ddd, b/332604449)
  • Dodano tag mocy do testu porównawczego konfiguracji Peretto. Umożliwia to rejestrowanie np. punktów śledzenia blokady aktywacji. (Icfe44, b/286551983)
  • Dodano argument inst androidx.benchmark.profiling.skipWhenDurationRisksAnr, który można ustawić na wartość false, aby uniknąć pomijania ścieżek metody, gdy oczekiwany czas trwania może spowodować ANR. Zaleca się, aby unikać tego argumentu podczas wykonywania testów CI.
  • Dodano eksperymentalny argument inst androidx.benchmark.profiling.perfCompare.enable. Ustaw go na wartość Prawda, aby uruchomić porównywanie czasu między fazami pomiaru i profilowania. Jest to przydatne np. do oceny obciążenia związanego z śledzeniem metod. (I61fb4, b/329146942)

Zmiany w interfejsie API

  • Zmiana klasy TraceSectionMetric.Mode na klasę zamkniętą w celu umożliwienia przyszłego rozszerzenia bez zakłócania wyczerpujących instrukcji warunkowych (I71f7b)
  • Dodano TraceSectionMetric.Mode.Average.Count oraz zmieniono kolejność parametrów, aby najczęściej używany argument (mode) był wyżej na liście argumentów, co zmniejsza potrzebę określania nazw parametrów. (Ibf0b0, b/315830077, b/322167531)
  • Zmieniono nazwę „Metric.getResult” na „getMeasurements”, aby odpowiadała typom zwracanych wartości (I42595)

Poprawki błędów

  • Poprawka, która zapewnia, że punkty odniesienia używają wygenerowanych profili podstawowych, gdy parametr automaticGenerationDuringBuild jest wyłączony (Ic144f, b/333024280)
  • Napraw przesłonięcia właściwości w pluginie BaselineProfile, aby umożliwić generowanie profilu bazowego i benchmarking podczas dostosowywania typu kompilacji nonMinified lub benchmarkowej. (Ib8f05, b/324837887)
  • Naprawiono błąd powodujący czyszczeniu śladów metod w makrobenchmarkach, dzięki czemu ślady metod powinny być w pełni uchwycone i prawidłowe nawet na wolniejszych urządzeniach. (I6349a, b/329904950)
  • Włącz blokowanie rozpoczęcia w rekordzie śledzenia w Perfetto, aby zmniejszyć ryzyko braku danych na początku śledzenia. Obsługiwane tylko w Androidzie w wersji 33 lub nowszej (Ie6e41, b/310760059).
  • Dodano ostrzeżenie, gdy Android Test Orchestrator jest używany w modułach testów porównawczych, ponieważ spowoduje to wielokrotne zastępowanie plików wyjściowych w formacie JSON. (Ia1af6, b/286899049)
  • Wymuszenie separatora tysięcy (',') w celu zapewnienia spójności danych wyjściowych w Studio, z ignorowaniem ustawień regionalnych urządzenia (I3e921, b/313496656)
  • TraceSectionMetric obsługuje teraz wycinki utworzone za pomocą Trace.{begin|end}AsyncSection. (I91b32, b/300434906)
  • Dodano etykiety log.w / exception do wszystkich błędów wykrywania podczas uruchamiania. Nie zmienia to bieżącego zachowania (niektóre błędy są zgłaszane, a inne nie są wykrywane), tylko ułatwia zrozumienie. Zazwyczaj te, które Log.w() i nie zwracają danych o uruchamianiu, to te, w których brakuje zdarzeń poza kadrem. Wyjątki są zgłaszane, gdy wykryto uruchamianie, z wyjątkiem informacji o czasie trwania kadru (z kadroków UI/RT). (Id240f, b/329145809)
  • Aby zmniejszyć zakłócenia, przed uruchomieniem testu porównawczego Macrobenchmark anuluj zadania dexopt wykonywane w tle. (I989ed)
  • Dodano pomiar frameCount do FrameTimingMetric, aby ułatwić wykrywanie scenariuszy, w których pomiary się zmieniają z powodu zmiany liczby wygenerowanych klatek (dodano nowe animacje, rozwiązano problemy z unieważnianiem). (I1e5aa)
  • Wyjaśnienie, że frameOverrunMs to preferowany rodzaj danych do śledzenia, gdy jest dostępny w dokumentach, oraz uzasadnienie. (I18749, b/329478323)

Wersja 1.3.0-alpha02

20 marca 2024 r.

androidx.benchmark:benchmark-*:1.3.0-alpha02 został zwolniony. Wersja 1.3.0-alpha02 zawiera te komity.

Nowe funkcje

  • Eksperymentalna obsługa R8 w microbench za pomocą wbudowanych reguł ProGuard. Pamiętaj, że ta funkcja jest eksperymentalna i wymaga wersji AGP 8.3 do kompresji testów modułu biblioteki. Aby włączyć w module benchmarku build.gradle kompresowanie/optymalizowanie R8, wykonaj te czynności. Powinno to doprowadzić do znacznego wzrostu wydajności w zależności od obciążenia. (I738a3, b/184378053)

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

Poprawki błędów

  • Poprawiono ostrzeżenie dotyczące śledzenia metody, aby było ono wyświetlane w oddzielnym wierszu od danych wyjściowych microbench. (I0455c, b/328308833)

Wersja 1.3.0-alpha01

21 lutego 2024 r.

androidx.benchmark:benchmark-*:1.3.0-alpha01 został zwolniony. Wersja 1.3.0-alpha01 zawiera te zatwierdzenia.

Zmiany w interfejsie API

  • Zmieniono nazwy parametrów logicznych MicrobenchmarkConfig, aby uniknąć niepotrzebnego słowa „should” (Ia8f00, b/303387299).
  • Dodano BenchmarkRule.measureRepeatedOnMainThread, aby testy porównawcze wątku głównego (np. te dotyczące widoków lub interfejsu tworzenia wiadomości) nie powodowały błędów ANR, zwłaszcza podczas dużych testów porównawczych w ramach CI. (I5c86d)
  • Dodano FrameTimingGfxInfoMetric, eksperymentalną alternatywną implementację FrameTimingMetric z danymi pochodzącymi bezpośrednio z platformy, a nie z wykresu Perfetto. (I457cb, b/322232828)
  • Dodanie możliwości zrzutu profilu ART podczas poszczególnych iteracji warmUp. (I17923)
  • Kilka zmian w interfejsie API TraceSectionMetric:
    • Dodaj Mode.Min, Mode.Max
    • Dodaj argument etykiety, aby zastąpić nazwę sekcji etykietą wskaźnika
    • Dodano nazwę trybu do danych wyjściowych, aby wyjaśnić znaczenie wskaźnika.
    • Zmiana domyślnego ustawienia na sumę, ponieważ te dane są najczęściej używane w przypadku powtarzających się zdarzeń. Pamiętaj o tych zmianach w używaniu CI, ponieważ mogą one powodować nieciągłości lub zakłócać analizę. (Ic1e82, b/301892382, b/301955938)

Poprawki błędów

  • Ulepszono komunikat o błędzie w pluginie Gradle do profilu podstawowego, gdy określone zarządzane urządzenie nie istnieje (Idea2b, b/313803289)
  • Poprawka dotycząca uwzględniania profili podstawowych bibliotek w AAR przed wersją AGP 8.3.0-alpha15 (I1d2af, b/313992099)
  • Naprawiono adres URL wyjściowy profilu bazowego i profilu startowego na końcu zadania generowania (I802e5, b/313976958).
  • Zmieniono limity czasu źródła danych, aby rozwiązać problem java.lang.IllegalStateException: Failed to stop [ProcessPid(processName=perfetto, pid=...)] (I8dc7d, b/323601788)
  • Dodaj 2 argumenty pomiarów, które umożliwiają zastąpienie zachowania odrzucania shaderów, aby rozwiązać problemy z zawieszaniem się aplikacji podczas testów porównawczych bez ProfileInstaller 1.3:
    • androidx.benchmark.dropShaders.enable=true/false : można go użyć, aby pominąć wszystkie opuszczenia shadera (w tym te, które występują podczas uruchamiania StartupMode.Cold), zwłaszcza podczas testowania porównawczego aplikacji, które nie używają jeszcze narzędzia profileinstaller 1.3.
    • androidx.benchmark.dropShaders.throwOnFailure=true/false : można go używać do tolerowania błędów podczas próby umieszczania shaderów, na przykład podczas testowania aplikacji bez profileinstaller 1.3 (I4f573).
  • pomijanie śledzenia metody na wątku interfejsu użytkownika, gdy przewidywany czas wykonania jest dłuższy niż kilka sekund, oraz czyszczenie śledzenia metody podczas rzucania. (I6e768)
  • Wyrzuć, gdy nazwy plików są dłuższe niż 200 znaków, aby uniknąć niejasnych awarii podczas zapisywania lub dalszego przetwarzania plików. (I4a5ab)
  • Rozwiązanie problemu polegającego na tym, że nieoznaczone ramki na początku i na końcu ścieżki mogły być ze sobą sparowane, co powodowało nieprawidłowe raportowanie jako pojedyncza bardzo długa ramka. (I39353, b/322232828)
  • Użyj --skip verification w interfejsie API 30 lub nowszym, gdy ponownie instalujesz pakiet w interfejsie API 30–33, aby wyczyścić profile ART w kompilacji użytkownika. Pomaga to obejść ostrzeżenia Play Protect, które powodują błędy na niektórych urządzeniach. (Ic9e36)
  • Użyj am force-stop, aby zamknąć aplikacje, które nie są aplikacjami systemowymi, takimi jak interfejs systemowy czy program uruchamiający. (I5e028)
  • Macrobenchmark czeka teraz 1 second na aplikację docelową, aby opróżnić profil ART (wcześniej czekał 500 ms). (I85a50, b/316082056)
  • Poprawiono błąd FrameTimingMetric, który występował, gdy nie były generowane ramki, oraz zawsze wyprowadzano link do śledzenia, gdy nie udało się przeanalizować danych, aby ułatwić diagnozowanie problemu. (I956b9)
  • Naprawiono błąd FrameTimingMetric, który powodował awarię podczas analizowania identyfikatora ramki, zwłaszcza na niektórych urządzeniach OEM. (Ia24bc, b/303823815, b/306235276)
  • Zmniejszono rygoryzm weryfikacji w FrameMetrics i dodano więcej szczegółów do komunikatów o błędach. (Iadede)

Wersja 1.2

Wersja 1.2.4

17 kwietnia 2024 r.

androidx.benchmark:benchmark-*:1.2.4 został zwolniony. Wersja 1.2.4 zawiera te komitowane zmiany.

Poprawki błędów

  • Rozwiązanie problemu polegający na tym, że w wariantach porównawczych nie był skonfigurowany zestaw srcset profilu podstawowego. Naprawia też problem z funkcją automaticGenerationDuringBuild w bibliotekach, która powodowała zależność zapętloną. (I28ab7, b/333024280)
  • Użyj am force-stop, aby zamknąć aplikacje, które nie są aplikacjami systemowymi, takimi jak interfejs systemowy czy program uruchamiający. Rozwiązanie problemu z zawieszaniem się testów porównawczych StartupMode.COLD z powodu komunikatu „Package $package must not be running prior to cold start!” (Pakiet $package nie może być uruchomiony przed uruchomieniem „na zimno”). (I5e028)

Wersja 1.2.3

24 stycznia 2024 r.

androidx.benchmark:benchmark-*:1.2.3 został zwolniony. Wersja 1.2.3 zawiera te zatwierdzenia.

Poprawki błędów

  • Usunięto wyjątek z wtyczki Gradle do profilu podstawowego, gdy wersja AGP wynosi 8.3.0 lub nowsza.
  • Poprawka dotycząca uwzględniania profili bazowych bibliotek w AAR w wersjach starszych niż AGP 8.3.0-alpha15.

Wersja 1.2.2

1 grudnia 2023 r.

androidx.benchmark:benchmark-*:1.2.2 został zwolniony. Wersja 1.2.2 zawiera te zatwierdzenia.

Profile podstawowe

Wersja 1.2.1

15 listopada 2023 r.

androidx.benchmark:benchmark-*:1.2.1 został zwolniony. Wersja 1.2.1 zawiera te zatwierdzenia.

Nowe funkcje

  • Ulepszono komunikat o błędzie, który wyświetla się, gdy użytkownik wyłącza warianty testowe (b/307478189).
  • Dodano właściwości, które umożliwiają integrację z testami AS (b/309805233, b/309116324).

Wersja 1.2.0

18 października 2023 r.

androidx.benchmark:benchmark-*:1.2.0 został zwolniony. Wersja 1.2.0 zawiera te zatwierdzenia.

Ważne zmiany od wersji 1.1.0

Profile podstawowe

  • Nowy wtyczka Gradle do profilu bazowego automatyzuje rejestrowanie i uwzględnianie profili bazowych w przepływie pracy testowania i tworzenia.
  • BaselineProfileRule.collect jest teraz stabilną, usprawnioną i uproszczoną wersją poprzedniego eksperymentalnego interfejsu API BaselineProfileRule.collectBaselineProfile.
    • Wystarczy, że określisz packageName i promujesz aplikację
  • W przypadku bibliotek generujących profile bazowe możesz teraz filtrować reguły wygenerowane w kodzie (argument BaselineProfileRule.collect) lub jeszcze łatwiej w pluginie Gradle.
  • Rozwiązania problemów

Macrobenchmark

  • Kompilacja
    • Macrobenchmark teraz prawidłowo resetuje stan kompilacji dla każdej kompilacji – wymaga to ponownego zainstalowania pliku APK przed Androidem 14, dlatego zdecydowanie zalecamy przeprowadzanie testów porównawczych na Androidzie 14 lub nowszym, jeśli chcesz zachować stan (np. logowanie użytkownika) w tym, co jest mierzone.
    • Możesz też obejść to ograniczenie, kontrolując kompilację aplikacji osobno i pomijając kompilację za pomocą parametru CompilationMode.Ignore() lub argumentu instrumentacji.
  • Argumenty narzędzia

    • Obsługa argumentu sterowania androidx.benchmark.dryRunMode.enable (dostępnego już w ramach mikrobenchmarków) w celu szybszego przeprowadzania testów weryfikacji (np. podczas tworzenia benchmarku lub przed przesłaniem)
    • Obsługa androidx.benchmark.profiling.mode=StackSamplingMethodTracing.
    • Dodano androidx.benchmark.enabledRules, aby umożliwić filtrowanie profilu bazowego w czasie wykonywania w porównaniu z testami reguł makrobenchmarku.
    • Dodano argument androidx.benchmark.perfettoSdkTracing.enable, aby umożliwić śledzenie za pomocą tracing-perfetto, np. śledzenie rekompozycji w komponencie Compose. Pamiętaj, że w przypadku korzystania z funkcji StartupMode.COLD czasy mogą się znacznie wydłużyć, ponieważ biblioteka śledzenia jest wczytywana i włączana podczas uruchamiania aplikacji.
  • Wymagania

    • Macrobenchmark wymaga teraz wersji ProfileInstaller 1.3.0 lub nowszej w aplikacji docelowej, aby umożliwić przechwytywanie / resetowanie profilu i czyszczenie pamięci podręcznej shadera.
  • Nowe eksperymentalne interfejsy API danych

    • Dodano eksperymentalną funkcję TraceSectionMetric, która umożliwia wyodrębnianie prostych ustawień czasu z bloków trace("") {} w aplikacji, lub funkcję TraceMetric, która umożliwia wykorzystanie pełnych możliwości zapytań Perfeto TraceProcessor.
    • Dodano eksperymentalny PowerMetric do rejestrowania informacji o zużyciu energii
    • Dodano eksperymentalną MemoryCountersMetric do zliczania błędów strony
    • Dodano eksperymentalny interfejs API PerfettoTraceProcessor, który jest używany wewnętrznie do wyodrębniania danych ze śladów systemu (czyli śladów Perfecto).
  • Poprawki

    • Naprawiono problemy z zawieszaniem się aplikacji podczas instalowania lub wyodrębniania profili z aplikacji zainstalowanej z wielu plików APK (np. z pakietu aplikacji).
    • Naprawiono błąd FrameTimingMetric ignorowania klatek z niespójnymi identyfikatorami klatek (zazwyczaj klatek podczas fal na interfejsie API w wersji 31 lub nowszej) (I747d2, b/279088460)
    • Naprawiono błędy przetwarzania w śladach większych niż 64 MB (Ief831, b/269949822)
    • Wyjaśnienie błędów, które występują, gdy obraz systemu operacyjnego urządzenia (zwłaszcza emulatora) nie jest prawidłowo skonfigurowany do śledzenia lub kompilacji
    • Pomijanie sprawdzania poziomu baterii w przypadku urządzeń bez baterii (mikro i makro)
    • Ulepszony format wyjściowy z bardziej przejrzystą informacją o błędach w przypadku nieprawidłowych katalogów wyjściowych i bezpieczniejszymi ustawieniami domyślnymi
    • Zwiększona stabilność StartupMode.COLD dzięki konsekwentnemu usuwaniu pamięci podręcznej shaderów (także udostępnianej przez MacrobenchmarkScope.dropShaderCache).
    • Naprawiono problemy z trybem leanback w przypadku startActivityAndWait.

Microbenchmark

  • Funkcje
    • Profilowanie zostało przeniesione do osobnej fazy, po innych danych, dzięki czemu jeden test może wyświetlać zarówno dokładne wyniki pomiaru czasu , jak i profilowania.
  • Eksperymentalne interfejsy API
    • Dodano eksperymentalny interfejs API MicrobenchmarkConfig do definiowania niestandardowych danych i konfigurowania śledzenia oraz profilowania. Można ich używać do rejestrowania ścieżek metod lub punktów śledzenia (ale należy pamiętać o kosztach śledzenia).
    • Dodano eksperymentalne interfejsy API do sterowania BenchmarkState oddzielnie od BenchmarkRule bez JUnit.
    • Dodano eksperymentalny rekord PerfettoTrace, aby umożliwić rejestrowanie dzienników perfetto z użyciem niestandardowej konfiguracji, oddzielnie od interfejsów benchmarkowych.
  • Rozwiązania problemów
    • obejście problemu z brakiem początkowych spacji w wyniku testu porównawczego w Android Studio;
    • Rozwiązanie problemu polegającego na tym, że ostrzeżenia mogły nie zostać wydrukowane w wyniku testu porównawczego w Android Studio.
    • Usunięto błąd powodujący awarię SampledProfiling w Androidzie 13 (poziom API 33) i nowszych.
    • Znacznie ulepszona wydajność dryRunMode dzięki pomijaniu IsolationActivity i śledzenia w Perfetto (do 10 razy szybszy tryb suchego uruchomienia w starszych wersjach systemu operacyjnego).

Wersja 1.2.0-rc02

6 października 2023 r.

androidx.benchmark:benchmark-*:1.2.0-rc02 został zwolniony. Wersja 1.2.0-rc02 zawiera te zatwierdzenia.

Poprawki błędów

  • Popraw wyjście pliku Benchmark, aby nie przerywać kopiowania pliku wtyczki BaselineProfile. Pliki zostały wygenerowane i skopiowane z urządzenia, ale zostały przemianowane w taki sposób, że wtyczka Gradle ich nie widziała. (I8dbcc, b/303034735, b/296453339)
  • Uściślone komunikaty o błędach wczytywania tracing-perfetto podczas wstrzykiwania z modułu macrobenchmark do aplikacji docelowej.

Wersja 1.2.0-rc01

20 września 2023 r.

androidx.benchmark:benchmark-*:1.2.0-rc01 został zwolniony. Wersja 1.2.0-rc01 zawiera te zatwierdzenia.

Poprawki błędów

  • Gdy śledzenie pakietu SDK Peretto nie uda się zainicjować w benchmarku, wyjątek (z instrukcjami naprawy) jest teraz zgłaszany. (I6c878, b/286228781)
  • Naprawić błąd OOM podczas konwertowania śledzenia metody ART -> format perfetto. (I106bd, b/296905344)
  • (Macrobenchmark) Uściślone oznaczenie metody śledzenia, gdy jest ono połączone z wynikiem testu w Studio. Poprawiono też nazwy plików metody śledzenia, aby były unikalne na urządzeniu/hoście, dzięki czemu nie będą nadpisywane podczas uruchamiania większej liczby testów porównawczych. (I08e65, b/285912360)
  • Upewnij się, że urządzenie jest aktywne podczas rejestrowania profilu bazowego. (I503fc)

Wersja 1.2.0-beta05

30 sierpnia 2023 r.

androidx.benchmark:benchmark-*:1.2.0-beta05 został zwolniony. Wersja 1.2.0-beta05 zawiera te commity.

Nowe funkcje

  • Wtyczka Gradle do profilu bazowego obsługuje teraz wtyczkę Android Gradle w wersji 8.3. (aosp/2715214)

Wersja 1.2.0-beta04

23 sierpnia 2023 r.

androidx.benchmark:benchmark-*:1.2.0-beta04 został zwolniony. Wersja 1.2.0-beta04 zawiera te commity.

Nowe funkcje

  • Wtyczka Gradle do profili bazowych obsługuje teraz wtyczkę Androida do obsługi Gradle w wersji 8.3. (aosp/2715214)

Poprawki błędów

  • Rozwiązywanie problemów z zapisywaniem / przenoszeniem i pobieraniem plików (zwłaszcza z testów parametrycznych) przez dalsze czyszczenie nazw plików wyjściowych, aby uniknąć znaków „=” i „:”. (I759d8)

Wersja 1.2.0-beta03

9 sierpnia 2023 r.

androidx.benchmark:benchmark-*:1.2.0-beta03 został zwolniony. Wersja 1.2.0-beta03 zawiera te commity.

Zmiany w interfejsie API

  • Dodano argument, aby filtr TraceSectionMetric był stosowany tylko do pakietu docelowego, domyślnie włączony (Ia219b, b/292208786)

Poprawki błędów

  • Zmieniliśmy nazwę argumentu fullTracing.enable na perfettoSdkTracing.enable, aby była ona zgodna z nazwą artefaktu i innymi odniesieniami. fullTracing.enable będzie nadal działać jako rozwiązanie zastępcze. (I7cc00)
  • Punkty śledzenia wewnętrznych biblioteki testów porównawczych (w tym śledzenie faz lub pętli mikrotestów porównawczych) będą teraz widoczne w przeglądarce śladów systemu Studio i zagnieżdżone pod odpowiednim procesem w Perfetto. (I6b2e7, b/293510459)
  • Usunięto błąd NOT-PROFILEABLE w macrobenchmark na poziomie interfejsu API 31 i nowszych oraz pominięto sprawdzanie możliwości profilowania na urządzeniach eng/userdebug z rootem. (I2abac, b/291722507)
  • Podczas korzystania z optymalizacji układu Dex reguły profilu startowego są teraz również traktowane jako reguły profilu podstawowego. (aosp/2684246, b/293889189)

Wersja 1.2.0-beta02

26 lipca 2023 r.

androidx.benchmark:benchmark-*:1.2.0-beta02 został zwolniony. Wersja 1.2.0-beta02 zawiera te commity.

Zmiany w interfejsie API

  • Dodano eksperymentalne interfejsy API do niestandardowych danych i konfiguracji mikrobencha (np. profilowanie i śledzenie). (I86101, b/291820856)

Poprawki błędów

  • Raportowanie błędu w macrobench, gdy system operacyjny jest nieprawidłowo skonfigurowany do śledzenia, co zostało niedawno poprawione w emulatorach API 26/28 ARM64. (I0a328, b/282191686)
  • Dodano szczegóły dotyczące niepowodzenia resetowania kompilacji, aby zasugerować zaktualizowanie emulatora, ponieważ w niektórych emulatorach problem został niedawno rozwiązany. (I8c815, b/282191686)
  • Zmień zależność androidx.test.uiautomator:uiautomator:2.2.0 na api zamiast implementation. (I1981e)

Wersja 1.2.0-beta01

18 lipca 2023 r.

androidx.benchmark:benchmark-*:1.2.0-beta01 został zwolniony. Wersja 1.2.0-beta01 zawiera te commity.

Poprawki błędów

  • Naprawiono ostrzeżenia, które są czasami pomijane w wyjściu Benchmarka w Studio, oraz znaleziono obejście problemu z niewyświetlaniem się w Studio białych znaków w pierwszej pozycji w wyjściu Benchmarka (Ia61d0, b/227205461, b/286306579, b/285912360)
  • Komentarz dotyczący FrameTimingMetric został poprawiony. Podrodzaj danych ma nazwę frameDurationCpuMs. (Ib097f, b/288830934).

Wersja 1.2.0-alpha16

21 czerwca 2023 r.

androidx.benchmark:benchmark-*:1.2.0-alpha16 został zwolniony. Wersja 1.2.0-alpha16 zawiera te commity.

Zmiany w interfejsie API

  • Interfejs API BaselineProfileRule.collectBaselineProfile() został przemianowany na BaselineProfileRule.collect(). (I4b665)

Poprawki błędów

  • Obsługa makrobenchmarków w przypadku androidx.benchmark.profiling.mode = MethodTracing. (I7ad37, b/285912360)
  • Profilowanie za pomocą mikrobenchmarków zostało przeniesione do osobnej fazy, więc jest wykonywane po pomiarze, a nie zamiast niego. Sekcje MethodTracing śladu są teraz również uwzględniane w zapisanym śladzie Peretto, jeśli taki istnieje. (I9f657, b/285014599)
  • Dodaj pomiar zliczania do TraceSectionMetric za pomocą Mode.Sum. (Ic121a, b/264398606)

Wersja 1.2.0-alpha15

7 czerwca 2023 r.

androidx.benchmark:benchmark-*:1.2.0-alpha15 został zwolniony. Wersja 1.2.0-alpha15 zawiera te zatwierdzenia.

Nowe funkcje

  • Dodano eksperymentalny MemoryUsageMetric do śledzenia wykorzystania pamięci przez aplikację docelową. (I56453, b/133147125, b/281749311)
  • Dodano obsługę w pełni niestandardowych konfiguracji Peretto za pomocą PerfettoTrace.record (If9d75, b/280460183).
  • Dodaliśmy właściwość, która pozwala pominąć generowanie profilu podstawowego. Użycie: ./gradlew assemble -Pandroidx.baselineprofile.skipgeneration. (I37fda, b/283447020)

Zmiany w interfejsie API

  • Interfejs API collectBaselineProfile zawsze generuje stabilne profile bazowe. Interfejs API collectStableBaselineProfile został usunięty. Zamiast niego należy używać interfejsu collectBaselineProfile. (I17262, b/281078707)
  • Zmiana argumentu filterPredicate funkcji BaselineProfileRule na niepusty z odpowiednią wartością domyślną, aby domyślne działanie filtra było bardziej przejrzyste w dokumentacji. (I3816e)

Poprawki błędów

  • Aby znacznie poprawić wydajność, wyłącz IsolationActivity i śledzenie Perfetto w dryRunMode, ponieważ pochłaniały one większość czasu działania. (Ie4f7d)
  • Obsługa próbkowania stosu wywołań w makrobenchmarkach za pomocą argumentów testu instrumentacji androidx.benchmark.profiling.mode=StackSamplingandroidx.benchmark.profiling.sampleFrequency. (I1d13b, b/282188489)
  • Naprawiono błąd powodujący awarię podczas przenoszenia shaderów na Androidzie U (API 34) oraz w emulatorze. (I031ca, b/274314544)

Wersja 1.2.0-alpha14

3 maja 2023 r.

androidx.benchmark:benchmark-*:1.2.0-alpha14 został zwolniony. Wersja 1.2.0-alpha14 zawiera te commity.

Poprawki błędów

  • Naprawiono błąd FrameTimingMetric ignorowania ramek z niespójnymi identyfikatorami. W efekcie niektóre animacje w najnowszych wersjach platform (API 31 i nowsze) ignorowałyby wiele klatek podczas animacji RenderThread (np. podczas efektu falowania). (I747d2, b/279088460)
  • Naprawiono analizę procesora ścieżki w przypadku ścieżek większych niż 64 MB. (Ief831, b/269949822)
  • Naprawiono problem z generowaniem profilu bazowego na Androidzie U, który występował z powodu innego wyjścia polecenia pm dump-profiles. (Id1392, b/277645214)
  • Popraw skrypt blokowania zegara GPU, aby poprawnie porównywać ciągi znaków (I53e54, b/213935715)

Wersja 1.2.0-alpha13

5 kwietnia 2023 r.

androidx.benchmark:benchmark-*:1.2.0-alpha13 został zwolniony. Wersja 1.2.0-alpha13 zawiera te zatwierdzenia.

Zmiany w interfejsie API

  • Dodano parametr typu profilu podczas generowania profili referencyjnych, aby obsługiwać nadchodzącą funkcję profilu startowego (Ie20d7, b/275093123).
  • Dodano nowy eksperymentalny interfejs API TraceMetric do definiowania całkowicie niestandardowych danych na podstawie zawartości ścieżki w Perfetto. (I4ce31, b/219851406)
  • Dodaj dane eksperymentalne, aby określić liczbę błędów strony podczas testu porównawczego. (I48db0)

Wersja 1.2.0-alpha12

22 marca 2023 r.

androidx.benchmark:benchmark-*:1.2.0-alpha12 został zwolniony. Wersja 1.2.0-alpha12 zawiera te commity.

Nowe funkcje

  • Udostępniliśmy nowy wtyczkę Gradle do generowania profilu bazowego w wersji alfa, która ułatwia generowanie profilu bazowego i upraszcza pracę programistów.

Zmiany w interfejsie API

  • Usunięto obsługę śledzenia Perfecto w wersjach API 21 i 22, która obejmuje zarówno testy mikrobenchmarków, jak i eksperymentalne interfejsy API PerfettoTrace. W poprzedniej wersji połączenia UiAutomation były niestabilne na niektórych urządzeniach. (I78e8c)
  • Dodano publiczny eksperymentalny interfejs API dla PerfettoTraceProcessor, aby umożliwić analizowanie treści z pliku z wykrywaniem błędów. Jest to krok w kierunku tworzenia w pełni niestandardowych danych na podstawie danych z wykrywania Perfeto. (I2659e, b/219851406)

Wersja 1.2.0-alpha11

8 marca 2023 r.

androidx.benchmark:benchmark-*:1.2.0-alpha11 został zwolniony. Wersja 1.2.0-alpha11 zawiera te zatwierdzenia.

Poprawki błędów

  • Naprawiono problemy z zawieszaniem się aplikacji MacrobenchmarkRuleBaselineProfileRule podczas ponownego instalowania lub wyodrębniania profili z pakietu aplikacji zawierającego wiele plików APK. (I0d8c8, b/270587281)

Wersja 1.2.0-alpha10

22 lutego 2023 roku

androidx.benchmark:benchmark-*:1.2.0-alpha10 został zwolniony. Wersja 1.2.0-alpha10 zawiera te zatwierdzenia.

Nowe funkcje

  • W Androidzie 14 i nowszych Macrobenchmark nie instaluje już ponownie aplikacji docelowych, aby zresetować stan kompilacji. Jest to możliwe dzięki nowej funkcji platformy. Wcześniej konieczne było posiadanie urządzenia z rootem lub usuwanie wszystkich stanów aplikacji (np. logowania użytkownika) przed każdym uruchomieniem testu porównawczego. (I9b08c, b/249143766)

Poprawki błędów

  • Upewnij się, że DryRunMode nie będzie się już zawieszać z powodu pustego profilu z powodu pomijania kompilacji. Zamiast tego wykonuje pojedynczą iterację i wyodrębnia profil, aby mieć pewność, że coś zostało zarejestrowane. (I2f05d, b/266403227)
  • Naprawiono błąd PowerMetric powodujący awarię podczas sprawdzania obecności danych o zasilaniu na starszych poziomach interfejsu API. (5faaf9, b/268253898)

Wersja 1.2.0-alpha09

11 stycznia 2023 r.

androidx.benchmark:benchmark-*:1.2.0-alpha09 został zwolniony. Wersja 1.2.0-alpha09 zawiera te commity.

Poprawki błędów

  • Umożliwiono przekazywanie parametru None do parametru androidx.benchmark.enabledRules w argumencie instrumentacji, aby wyłączyć generowanie wszystkich testów porównawczych i profili bazowych. (I3d7fd, b/258671856)
  • Naprawić rejestrowanie PerfettoTrace w modułach aplikacji (np. w testowych plikach APK bez samouinstrumentowania) (I12cfc)
  • Naprawiono kolejność argumentów polecenia adb pull w profilu bazowym w wyjściu Studio (I958d1, b/261781624).
  • Emulator ARM API 33 jest teraz prawidłowo rozpoznawany jako taki podczas próby uruchomienia testu porównawczego na poziomie makro i prawidłowo wyświetla ostrzeżenie. (69133b,b/262209591)
  • Pomijanie sprawdzania poziomu baterii na urządzeniach bez baterii w Macrobenchmark (fe4114, b/232448937)

Wersja 1.2.0-alpha08

7 grudnia 2022 r.

androidx.benchmark:benchmark-*:1.2.0-alpha08 został zwolniony. Wersja 1.2.0-alpha08 zawiera te zatwierdzenia.

Zmiany w interfejsie API

  • Dodaliśmy eksperymentalne nowe interfejsy API PerfettoTrace.record {}PerfettoTraceRule, które umożliwiają rejestrowanie śladów Perfetto (zwanych też śladami systemowymi) w ramach testu, aby sprawdzić zachowanie i wydajność testu. (I3ba16)
  • BaselineProfileRule przyjmuje teraz predykat filtra zamiast listy prefiksów pakietów. Daje to testowi pełną kontrolę nad filtrowaniem. (I93240)
  • Dodaj eksperymentalny interfejs API BaselineProfileRule.collectStableBaselineProfile, który czeka, aż profil podstawowy będzie stabilny przez N iteracji. (I923f3)
  • Dodanie możliwości określenia prefiksu nazwy pliku wyjściowego podczas generowania profili referencyjnych za pomocą polecenia BaselineProfileRule. (I7b59f, b/260318655)

Poprawki błędów

  • Poprawić bezpieczeństwo zapisywania danych wyjściowych w plikach, co powinno uniemożliwić niezauważalne niezapisanie lub niedodanie plików wyjściowych, zwłaszcza w przypadku interfejsu API 21/22. (If8c44, b/227510293)
  • Popraw wyjściowy plik simpleperf, aby utworzyć i umieścić plik w odpowiednim miejscu. Powinna też ogólnie rozwiązać problemy z nieudanym pobieraniem pliku przez Gradle. (I12a1c, b/259424099)
  • Ulepszono komunikat o błędzie w programie profileinstaller, który jest wyświetlany, gdy program jest zbyt stary. Teraz zamiast informacji o nieobsługiwaniu tej funkcji wyświetla się komunikat z prośbą o zaktualizowanie wersji narzędzia profileinstaller (1.2.1) w celu pomiaru profili referencyjnych na interfejsie API 31–33. (Ia517f, b/253519888)
  • Naprawić kilka błędów wywołania powłoki w komunikacie o błędzie Print needed API <=23, w tym błędy konfiguracji binarnego pakietu perfetto i błędy związane z przechwytywaniem śladów (Ib6b87, b/258863685).
  • Automatycznie sortuj wygenerowane reguły profilu, aby zminimalizować liczbę zmian, gdy zmieniają się one z czasem (podczas sprawdzania reguł profilu w kontroli źródła). (Ie2509)
  • Naprawiono problem z zawieszaniem się wersji bez roota na Androidzie w wersji starszej niż 13 (poziom API 33) z komunikatem Expected no stderr from echo 3 > /proc/sys/vm/drop_caches (I6c245, b/259508183).

Znane problemy - MacrobenchmarkScope.dropShaderCache() może się zawiesić z powodu braku rejestru transmisji w manifeście profileinstaller, który nie został jeszcze opublikowany. (I5c728, b/258619948) Aby obejść problem w profileinstaller:1.3.0-alpha02, dodaj do pliku AndroidManifest.xml aplikacji (a nie benchmarku) następujące dane:

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

Wersja 1.2.0-alpha07

9 listopada 2022 r.

androidx.benchmark:benchmark-*:1.2.0-alpha07 został zwolniony. Wersja 1.2.0-alpha07 zawiera te commity.

Zmiany w interfejsie API

  • Dodano interfejs API PowerMetric do pomiaru energii i mocy w Macrobenchmarks. (Ife601, b/220183779)
  • Naprawiono MacrobenchmarkScope.dropShaderCache(), aby faktycznie usunąć pamięć podręczną shadera. Dzięki temu z testów porównawczych StartupMode.COLD zniknie szum o okresie około 20 ms, ponieważ shadery są teraz konsekwentnie czyszczone w każdej iteracji. Wcześniej kompilacja Partial przy użyciu iteracji rozgrzewania raportowała nieprawidłowo szybkie wartości, ponieważ podczas rozgrzewania częściej następowało buforowanie shaderów. Ta poprawka wymaga zrootowanego urządzenia lub użycia biblioteki profileinstaller:1.3.0-alpha02 w aplikacji docelowej. Informacje o zmianach w interfejsie API biblioteki ProfileInstaller znajdziesz na stronie ProfileInstaller 1.30-alpha02. (Ia5171, b/231455742)
  • Dodano TraceSectionMode("label", Mode.Sum), co umożliwia pomiar łącznego czasu spędzonego w kilku sekcjach ścieżki z tą samą etykietą. Na przykład TraceSectionMetric("inflate", Mode.Sum) będzie podawać dane inflateMs dotyczące łącznego czasu w makrobencmarku poświęconego na inflację. Usunięto też wymóg interfejsu API 29, ponieważ TraceSectionMetric działa razem z androidx.tracing.Trace w wersjach na niższych poziomach interfejsu API, z wykorzystaniem forceEnableAppTracing w aplikacji docelowej. (Id7b68, b/231455742)

Poprawki błędów

  • Zwiększono bezpieczeństwo wszystkich poleceń wewnętrznych powłoki przez weryfikowanie wszystkich danych wyjściowych i błędów. (I5984d, b/255402908, b/253094958)
  • Określ urządzenie w poleceniu adb pull w profilu bazowym, aby można było po prostu skopiować polecenie pull, jeśli połączonych jest kilka urządzeń (maksymalnie 1 emulator) (I6ac6c, b/223359380)
  • Dodaj błąd, jeśli testowy plik APK macrobenchmark nie jest skonfigurowany jako samodzielna instrumentacja. Ten błąd uniemożliwia przeprowadzanie makrotestów porównawczych w ramach procesu aplikacji docelowej. Podczas testowania macrobench nie może skompilować, zabić ani uruchomić na zimno aplikacji ani kontrolować jej uprawnień (I4279b)
  • Rozwiązaliśmy problem w measureRepeated() polegający na tym, że StartupMode.COLD nie zabijał procesu docelowego po wykonaniu instrukcji setupBlock. Teraz setupBlock, który wchodzi w interakcję z aplikacją, nie powoduje uruchomienia procesu aplikacji ani nieprawidłowych pomiarów uruchamiania „na zimno”. (I8ebb7)

Wersja 1.2.0-alpha06

24 października 2022 r.

androidx.benchmark:benchmark-*:1.2.0-alpha06 został zwolniony. Wersja 1.2.0-alpha06 zawiera te commity.

Zmiany w interfejsie API

  • BaselineProfileRule nie wymaga już uprawnień roota na Androidzie 13 (API 33) i nie jest już eksperymentalna. (Ie0a7d, b/250083467, b/253094958)
    • Ta zmiana naprawia też sposób, w jaki profile z aplikacji są zapisywane na dysku na urządzeniach bez uprawnień roota, ale wymaga aktualizacji zależności profileinstaller aplikacji docelowej.
    • Aby korzystać z funkcji BaselineProfileRule lub CompilationMode.Partial(warmupIterations) na urządzeniu bez uprawnień roota, musisz też zaktualizować aplikację docelową, aby używać funkcji androidx.profileinstaller.profileinstaller:1.3.0-alpha01. Umożliwi to prawidłowe zapisanie profilu na dysku, aby można go było skompilować lub wyodrębnić.

Poprawki błędów

  • Rozwiązano problem z wypadkiem interfejsu SampledProfiling na poziomie API 33 lub wyższym (I40743, b/236109374).

Wersja 1.2.0-alpha05

5 października 2022 r.

androidx.benchmark:benchmark-*:1.2.0-alpha05 został zwolniony. Wersja 1.2.0-alpha05 zawiera te commity.

Poprawki błędów

  • Poprawianie podziału ramki w podglądzie śledzenia systemu w Studio w przypadku uchwytów benchmarkowych (I3f3ae, b/239677443)
  • Popraw FrameTimingMetric, aby FrameOverrun wymagało interfejsu API 31 zamiast 29 (I716dd, b/220702554)
  • Ustaw iterację w BaselineProfileRule i wyrzuć wyraźnie, jeśli pakiet docelowy nie jest zainstalowany (zostało to już zrobione w przypadku MacrobenchmarkRule). (Ic09a3, b/227991471)

Wersja 1.2.0-alpha04

21 września 2022 r.

androidx.benchmark:benchmark-*:1.2.0-alpha04 został zwolniony. Wersja 1.2.0-alpha04 zawiera te commity.

Nowe funkcje

  • Dodanie obsługi argumentu dryRunMode.enable do testów porównawczych (dostępnych już w przypadku testów mikro) w celu przyspieszenia procesu programowania lokalnego i sprawdzania automatyzacji aplikacji (np. przed przesłaniem). Ta opcja zastępuje iteracje na 1, pomija kompilację, tłumi wszystkie błędy konfiguracji i wyłącza generowanie pliku pomiarowego .json. (Ib51b4, b/175149857)

    W wierszu poleceń Gradle:

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

    W pliku build.gradle:

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

Poprawki błędów

  • Naprawiono błąd StartupTimingMetric, który powodował, że zmierzone aktywności nie były już uruchamiane przez MacrobenchmarkScope.startActivityAndWait(). Oznacza to, że dane mogą uwzględniać uruchomienia aplikacji z np. powiadomień, Context.startActivity(), nawigacji na podstawie aktywności w aplikacji lub poleceń w powłoce. (Ia2de6, b/245414235)
  • Naprawiono błąd, który powodował, że startActivityAndWait kończyło się czas oczekiwania na zakończenie uruchamiania na emulatorach. Wynikało to z ograniczenia rygoryzmu wykrywania klatek. (Ibe2c6, b/244594339, b/228946895)

Wersja 1.2.0-alpha03

7 września 2022 roku

androidx.benchmark:benchmark-*:1.2.0-alpha03 został zwolniony. Wersja 1.2.0-alpha03 zawiera te komisy.

Nowe funkcje

  • Dodano eksperymentalne interfejsy API do korzystania z usługi BenchmarkState niezależnie od usług BenchmarkRule / JUnit4. (Id478f, b/228489614)

Poprawki błędów

  • Dodano tryb Leanback jako opcję zastępczą dla startActivityAndWait. (01ed77, b/242899915)

Wersja 1.2.0-alpha02

24 sierpnia 2022 r.

androidx.benchmark:benchmark-*:1.2.0-alpha02 został zwolniony. Wersja 1.2.0-alpha02 zawiera te commity.

Zmiany w interfejsie API

  • Domyślnie am force stop dla MacrobenchmarkScope.killProcess(), nawet gdy urządzenie ma uprawnienia roota, z wyjątkiem generowania profilu podstawowego. Można go zastąpić opcjonalnym argumentem logicznym. (02cce9, b/241214097)

Poprawki błędów

  • Obsługa generowania profilu podstawowego dla aplikacji systemowych. (I900b8, b/241214097)
  • Obsługa sprawdzania danych o zasilaniu w ODPM na urządzeniach bez uprawnień roota. (a38c78, b/229623230)

Wersja 1.2.0-alpha01

27 lipca 2022 roku

androidx.benchmark:benchmark-*:1.2.0-alpha01 został zwolniony. Wersja 1.2.0-alpha01 zawiera te commity.

Nowe funkcje

  • Nowy komponent tracing-perfetto-common, który umożliwia narzędziom włączanie śledzenia pakietu SDK Peretto w aplikacji, która go udostępnia (I2cc7f)
  • Dodano argument androidx.benchmark.enabledRules, aby umożliwić filtrowanie testów porównawczych makro do testów porównawczych lub generowania profilu podstawowego. Przekaż argument „Macrobenchmark” lub „BaselineProfile”, aby uruchomić tylko jeden typ testu, np. podczas generowania BaselineProfiles na emulatorze. Lista rozdzielona przecinkami jest również obsługiwana. (I756b7, b/230371561)

    Przykładowo w pliku build.gradle makrobenchmarku:

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

    Lub z poziomu wiersza poleceń Gradle:

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

Zmiany w interfejsie API

  • Dodaliśmy nowe PowerMetric do pomiaru zadań związanych z energią i mocą w testach porównawczych. (I9f39b, b/220183779)
  • Dodano nowy tryb kompilacji CompilationMode.Ignore, który pozwala pominąć resetowanie profilu i kompilację. (Ibbcf8, b/230453509)
  • Dodano nowy parametr do narzędzia BaselineProfileRule#collectBaselineProfile, aby filtrować plik wyjściowy według nazw pakietów (If7338, b/220146561).
  • Umożliwia deweloperowi rozładowanie urządzenia w celu zmierzenia zużycia energii. (I6a6cb)
  • Dodaliśmy możliwość wyczyszczania pamięci podręcznej shaderów w MacrobenchmarkScope. (I32122)
  • Umożliwia deweloperowi skonfigurowanie wyświetlania typu danych i szczegółowych kategorii podsystemów. (I810c9)
  • Wcześniej w ramach testu porównawczego uwzględniano UnsupportedOperationException, jeśli test był przeprowadzany na nieobsługiwanym urządzeniu. Teraz UOE występuje tylko wtedy, gdy dana wartość jest używana na urządzeniu, które nie obsługuje tego typu danych (np. PowerMetric.configure). (I5cf20, b/227229375)
  • Dodano TotalPowerMetricTotalEnergyMetric do pomiaru łącznej mocy i energii w każdej kategorii systemu w makrobenchmarkach. (I3b26b, b/224557371)

Poprawki błędów

  • Rozwiązaliśmy problem polegający na tym, że skompilowane metody nie były prawidłowo resetowane między każdym makrotestem w przypadku wersji bez uprawnień roota. Niestety wymaga to ponownego instalowania pliku APK w każdej iteracji, co spowoduje wyczyszczenie danych aplikacji dla każdego testu makrobenchmarku. (I31c74, b/230665435)
  • Naprawiono błąd powodujący awarię podczas rejestrowania śladów na poziomie interfejsu API 21/22 (If7fd6, b/227509388, b/227510293, b/227512788).
  • Zmodernizowano wykrywanie ukończenia uruchamiania aktywności w celu naprawienia wyjątku „Nie można odczytać żadnych danych” w makrobenchmarkach uruchamiania. (Ia517c)

Wersja 1.1.1

Wersja 1.1.1

9 listopada 2022 r.

androidx.benchmark:benchmark-*:1.1.1 został zwolniony. Wersja 1.1.1 zawiera te zatwierdzenia.

Poprawki błędów

  • Rozwiązano problem android.system.ErrnoException: open failed: EACCES występujący na niektórych urządzeniach z Androidem 11 (poziom interfejsu API 30) i nowszych. To jest poprawka z 1.2.0-alpha01. (aosp/2072249)

Wersja 1.1.0

Wersja 1.1.0

15 czerwca 2022 r.

androidx.benchmark:benchmark-*:1.1.0 został zwolniony. Wersja 1.1.0 zawiera te zatwierdzenia.

  • Ta wersja jest identyczna z androidx.benchmark:benchmark-*:1.1.0-rc03.

Ważne zmiany od wersji 1.0.0

Wersja 1.1.0-rc03

1 czerwca 2022 r.

androidx.benchmark:benchmark-*:1.1.0-rc03 został zwolniony. Wersja 1.1.0-rc03 zawiera te commity.

Poprawki błędów

Wersja 1.1.0-rc02

11 maja 2022 roku

androidx.benchmark:benchmark-*:1.1.0-rc02 został zwolniony. Wersja 1.1.0-rc02 zawiera te zatwierdzenia.

  • Pamiętaj, że ta wersja zawiera zmianę zachowania, ponieważ aplikacje są teraz ponownie instalowane między każdym pomiarem, aby zapewnić dokładność pomiarów.

Poprawki błędów i zmiany zachowania

  • Rozwiązaliśmy problem polegający na tym, że kompilacja aplikacji nie była prawidłowo resetowana między makrotestami i wcale nie była resetowana w przypadku wersji bez uprawnień roota. Rozwiązanie to naprawia wiele przypadków, w których uruchomienie wielu testów powodowało, że CompilationMode miało niewielki lub żaden wpływ na pomiary. Aby rozwiązać ten problem, aplikacja docelowa jest teraz w ramach każdej metody testowania całkowicie ponownie instalowana, co powoduje wyczyszczenie danych aplikacji między każdym testem makrobenchmarku. (I31c74, b/230665435)

  • Ponieważ uniemożliwia to aplikacjom konfigurowanie stanu przed testami, teraz można pominąć kompilację lub ponowną instalację, aby obejść ten problem. Możesz na przykład w pełni skompilować docelowe środowisko za pomocą polecenia w powłoce cmd package compile -f -m speed <package>, a potem pominąć etap kompilacji w macrobenchmark.

    Przykładowo w pliku build.gradle makrobenchmarku:

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

    Lub z poziomu wiersza poleceń Gradle:

    ./gradlew macrobenchmark:cC -P android.testInstrumentationRunnerArguments.androidx.benchmark.compilation.enabled=false
    
  • Umożliwiliśmy udostępnianie modułu między testami makrobenchmarków i testami generowania profilu bazowego przez dodanie argumentu androidx.benchmark.enabledRules. Przekaż argument „Macrobenchmark” lub „BaselineProfile”, aby uruchomić tylko jeden typ testu, np. podczas generowania BaselineProfiles na emulatorze. (I756b7, b/230371561)

    Przykładowo w pliku build.gradle makrobenchmarku:

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

    Lub z poziomu wiersza poleceń Gradle:

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

Wersja 1.1.0-rc01

20 kwietnia 2022 r.

androidx.benchmark:benchmark-*:1.1.0-rc01 został zwolniony. Wersja 1.1.0-rc01 zawiera te zatwierdzenia.

Poprawki błędów

  • Linki do plików wyjściowych profilu bazowego w Android Studio używają teraz unikalnej nazwy pliku. Dzięki temu dane wyjściowe zawsze odzwierciedlają najnowsze wyniki użycia funkcji BaselineProfileRule. ( aosp/2057008, b/228203086 )

Wersja 1.1.0-beta06

6 kwietnia 2022 roku

androidx.benchmark:benchmark-*:1.1.0-beta06 został zwolniony. Wersja 1.1.0-beta06 zawiera te zatwierdzenia.

Poprawki błędów

  • Rozwiązanie problemu z zawieszaniem się nagrywania śladów w wersji API 21/22 (If7fd6, b/227509388)
  • Zmodernizuj wykrywanie ukończenia uruchamiania aktywności, aby naprawić wyjątek „Nie można odczytać żadnych danych” w makrobenchmarkach na starcie. (Ia517c)
  • Poprawiono dane o rozruchu w przypadku testów porównawczych makro, gdy używana jest opcja CompilationMode.None(). Przed tą zmianą CompilationMode.Partial() wydawał się wolniejszy niż Compilation.None(). (611ac9).

Wersja 1.1.0-beta05

23 marca 2022 r.

androidx.benchmark:benchmark-*:1.1.0-beta05 został zwolniony. Wersja 1.1.0-beta05 zawiera te commity.

Poprawki błędów

  • Zabijanie pakietu po pominięciu instalacji profilu podczas korzystania z CompilationMode.None. (aosp/1991373)
  • Rozwiązaliśmy problem, który uniemożliwiał zbieranie danych o rozruchu przez Macrobenchmarks w przypadku korzystania z usługiStartupMode.COLD. (aosp/2012227 b/218668335)

Wersja 1.1.0-beta04

23 lutego 2022 r.

androidx.benchmark:benchmark-*:1.1.0-beta04 został zwolniony. Wersja 1.1.0-beta04 zawiera te commity.

Poprawki błędów

  • Poprawka dotycząca brakujących danych na Androidzie 10 i NoSuchElementException spowodowana nieprawidłowym rejestrowaniem nazw procesów w śladach. (Ib4c17, b/218668335)

  • Użyj PowerManager do wykrywania ograniczania wydajności z powodu przegrzania w Androidzie Q (API 29) i nowszych. Dzięki temu znacznie zmniejsza się częstotliwość fałszywych wyników pozytywnych w detekcji ograniczania mocy ze względu na przegrzanie (powtórne uruchomienie testu po 90 sekundach przerwy) oraz znacznie przyspiesza się testy porównawcze w wersjach użytkownika. Funkcja ta umożliwia również wykrywanie ograniczeń nawet wtedy, gdy zegary są zablokowane (jeśli są zablokowane zbyt wysoko w stosunku do fizycznego środowiska urządzenia). (I9c027, b/217497678, b/131755853)

  • Aby uprościć inspekcję, przefiltruj profilowanie z próbkowaniem simpleperf tylko do wątku measureRepeated (Ic3e12, b/217501939)

  • Wspieranie danych pochodzących z nazwanych podprocesów interfejsu użytkownika w aplikacji wieloprocesowej (Ice6c0, b/215988434)

  • Filtruj reguły profilu podstawowego, aby kierować reklamy na Androida 9 (SDK 28). aosp/1980331 b/216508418

  • Pomiń instalowanie profilu podczas korzystania z Compilation.None(). Dodatkowo zgłaszaj ostrzeżenia, gdy aplikacja używa starszej wersji androidx.profileinstaller i wtyczki Android Gradle. aosp/1977029

Wersja 1.1.0-beta03

9 lutego 2022 r.

androidx.benchmark:benchmark-*:1.1.0-beta03 został zwolniony. Wersja 1.1.0-beta03 zawiera te commity.

Zmiany w interfejsie API

  • Dodano AudioUnderrunMetric do biblioteki macrobenchmark z flagą eksperymentalną, aby umożliwić wykrywanie niedoborów dźwięku (Ib5972).
  • Blokada BaselineProfileRule nie obsługuje już bloku setup, ponieważ działa on tak samo jak blokada profileBlock. (Ic7dfe, b/215536447)

    Na przykład

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

Poprawki błędów

  • Rozwiązaliśmy problem, który powodował, że ścieżki profilera microbench nie były aktualizowane podczas kolejnych uruchomień, gdy były połączone w wyjściu Studio (I5ae4d, b/214917025).
  • Zapobieganie kompilowaniu poleceń powłoki w wersji API 23 (Ice380)
  • Zmieniliśmy nazwy atrybutów FrameCpuTime -> FrameDurationCpu, FrameUiTime -> FrameDurationUi, aby było jasne, że są to czasy trwania, a nie sygnatury czasowe, oraz aby dopasować je do prefiksów. (I0eba3, b/216337830)

Wersja 1.1.0-beta02

26 stycznia 2022 r.

androidx.benchmark:benchmark-*:1.1.0-beta02 został zwolniony. Wersja 1.1.0-beta02 zawiera te commity.

Poprawki błędów

  • Wyniki profilu mikrobenchmarków w ramach próbkowania stosu / śledzenia metody są teraz połączone w wyjściu Studio, podobnie jak inne dane wyjściowe dotyczące profilowania, i nie tłumią danych pomiaru alokacji. (Idcb65, b/214440748, b/214253245)
  • Teraz w logcat i wyjściu w Studio w przypadku wygenerowanego pliku tekstowego BaselineProfile drukowane jest polecenie adb pull. (f08811)

Wersja 1.1.0-beta01

12 stycznia 2022 r.

androidx.benchmark:benchmark-*:1.1.0-beta01 został zwolniony. Wersja 1.1.0-beta01 zawiera te commity.

Poprawki błędów

  • Naprawiono ignorowanie argumentu enable w profilerze. (I37373, b/210619998)
  • Usunięto przestarzałe CompliationModes (I98186, b/213467659)
  • Aby zwiększyć przejrzystość, argument profilu podstawowego CompilationMode.Partial został zastąpiony przez enumerację. (Id67ea)

Wersja 1.1.0-alpha13

15 grudnia 2021 roku

androidx.benchmark:benchmark-*:1.1.0-alpha13 został zwolniony. Wersja 1.1.0-alpha13 zawiera te commity.

Zmiany w interfejsie API

  • Dodaj śledzenie systemu o małym obciążeniu do danych wyjściowych mikrobenchmarku na Androidzie Q (interfejs API 29 lub nowszy). Pamiętaj, że obecnie nie rejestruje się śledzenia niestandardowego (za pomocą interfejsów Jetpack android.os.Trace lub androidx.tracing), aby nie wpływać na wyniki. Śledzenie to powinno być przydatne do diagnozowania niestabilności, zwłaszcza ze źródeł spoza benchmarku. (I298be, b/205636583, b/145598917)
  • Doprecyzuj CompilationModes na 3 klasy: pełna, żadna i częściowa. Wcześniej były one niespójnie nazywane na podstawie argumentów kompilacji (które teraz traktujemy jako szczegóły implementacji) i funkcji. Dzięki temu łatwiej jest zrozumieć kompromisy, potencjalne kombinacje i zachowanie w różnych wersjach platform. (I3d7bf, b/207132597)
  • Konfiguracja i pomiar są teraz zawsze w parach, w kolejności. Możesz teraz wysłać zapytanie o nazwę pakietu i iterację (chociaż w niektórych scenariuszach rozgrzewki iteracja może być null). (Id3b68, b/208357448, b/208369635)

Poprawki błędów

  • Naprawiono błąd polegający na nieprawidłowym traktowaniu wartości CompilationMode.Speed jako None (I01137)

Wersja 1.1.0-alpha12

17 listopada 2021 r.

androidx.benchmark:benchmark-*:1.1.0-alpha12 został zwolniony. Wersja 1.1.0-alpha12 zawiera te commity.

Nowe funkcje

  • Dodaj eksperymentalny typ danych TraceSectionMetric do pomiarów czasu opartych na niestandardowych logach czasu. (I99db1, b/204572664)

Poprawki błędów

  • Budzenie urządzenia przy każdej iteracji, aby umożliwić testowanie interfejsu użytkownika – wymaga wyłączenia ekranu blokady. (Ibfa28, b/180963442)
  • Naprawiono wiele awarii w trybie profilowania próbkowania stosu na emulatorach i niezrootowanych urządzeniach (Icdbda, b/202719335).
  • Usunięto 0,5-sekundową przerwę na końcu każdej iteracji.Jeśli po tej zmianie zauważysz brakujące dane, zgłoś błąd. (JEŻELI.ND6AA)
  • Zmniejszenie prawdopodobieństwa utraty danych i zmniejszenie obciążenia pamięci przez śledzenie (Id2544, b/199324831, b/204448861)
  • Zmniejsz rozmiar śladu o ok. 40%, przechodząc na kompaktowy format przechowywania harmonogramu. (Id5fb6, b/199324831)
  • Zaktualizowano implementacje danych o uruchamianiu, aby zawsze kończyły się na końcu wątku renderowania. Dzięki temu pomiary będą bardziej spójne na różnych wersjach platformy i bardziej odpowiadać pomiarom w aplikacji. (Ic6b55)

Wersja 1.1.0-alpha11

3 listopada 2021 r.

androidx.benchmark:benchmark-*:1.1.0-alpha11 został zwolniony. Wersja 1.1.0-alpha11 zawiera te commity.

Zmiany w interfejsie API

  • Makrobenchmark ma teraz minSdkVersion 23. (If2655)
  • Dodaje nowy eksperymentalny BaselineProfileRule, który umożliwia generowanie profili bazowych dla kluczowych ścieżek użytkownika w aplikacji. Szczegółowa dokumentacja będzie dostępna wkrótce. (Ibbefa, b/203692160)
  • Usuwa wariant interfejsu measureRepeated, który został dodany dla wywołujących metody Java, ponieważ powodował niejednoznaczność podczas wypełniania lub rozwiązywania metody. Wywołujący w Javie będą musieli ponownie zwracać Unit.Instance z measureRepeated. Jeśli to utrudnia Ci pracę, zgłoś błąd, a my rozpatrzymy tę kwestię w przyszłej wersji. (Ifb23e, b/204331495)

Wersja 1.1.0-alpha10

27 października 2021 roku

androidx.benchmark:benchmark-*:1.1.0-alpha10 został zwolniony. Wersja 1.1.0-alpha10 zawiera te commity.

Zmiany w interfejsie API

  • Przeniesienie klasy StartupTimingMetric do poziomu interfejsu API 23. Ta nowa implementacja lepiej obsługuje funkcję reportFullyDrawn(), aby poczekać na wyrenderowanie odpowiednich treści. (If3ac9, b/183129298)
  • Dodano JvmOverloads do wielu metod MacrobenchmarkScope dla wywołujących w Javie. (I644fe, b/184546459)
  • Podaj alternatywną funkcję MacrobenchmarkRule.measureRepeated, która używa funkcji Consumer<MacrobenchmarkScope> do idiomatycznego użycia w języku Java. (If74ab, b/184546459)

Poprawki błędów

  • Rozwiązanie problemu polegający na tym, że ścieżki nie zaczynają się odpowiednio wcześnie, oraz brak danych wskaźników. Ma to rozwiązać problem z wyjątkami „Nie można odczytać żadnych danych podczas testu porównawczego”, które były spowodowane przez samą bibliotekę. (I6dfcb, b/193827052, b/200302931)
  • Nazwa FrameNegativeSlack została zmieniona na FrameOverrun, aby lepiej oddawała jej znaczenie, czyli o ile dana klatka przekroczyła swój budżet czasowy. (I6c2aa, b/203008701)

Wersja 1.1.0-alpha09

13 października 2021 r.

androidx.benchmark:benchmark-*:1.1.0-alpha09 został zwolniony. Wersja 1.1.0-alpha09 zawiera te commity.

Poprawki błędów

  • Obsługa usuwania pamięci podręcznej strony Kernel bez uprawnień root na interfejsie API 31/S+, co zwiększy dokładność uruchamiania StartupMode.COLD. (Iecfdb, b/200160030)

Wersja 1.1.0-alpha08

29 września 2021 r.

androidx.benchmark:benchmark-*:1.1.0-alpha08 został zwolniony. Wersja 1.1.0-alpha08 zawiera te zatwierdzenia.

Zmiany w interfejsie API

  • Umożliwienie uruchamiania testów porównawczych z przewijaniem od wersji API 23 (If39c2, b/183129298)
  • Dodaj do interfejsu użytkownika i wyjściowych danych JSON nowy typ danych pochodzących z próbkowania, który skupia się na wartościach percentylowych wielu próbek na iterację. (I56247, b/199940612)
  • Przełącz się na dane zmiennoprzecinkowe w bibliotekach porównawczych (w interfejsie Studio są one przycinane). (I69249, b/197008210)

Wersja 1.1.0-alpha07

1 września 2021 roku

androidx.benchmark:benchmark-*:1.1.0-alpha07 został zwolniony. Wersja 1.1.0-alpha07 zawiera te commity.

Zmiany w interfejsie API

  • Zwiększono minimalny poziom interfejsu API do 21, aby odzwierciedlić planowany najniższy poziom interfejsu API, który będzie obsługiwany w przyszłości. Aktualna minimalna wersja interfejsu API jest nadal przekazywana za pomocą RequiredApi(), a obecnie wynosi 29 (I440d6, b/183129298).

Poprawki błędów

  • Poprawki ProfileInstaller, które ułatwiają aplikacjom korzystającym z profili bazowych uruchamianie testów MacroBenchmarks za pomocą CompilationMode.BaselineProfile. (I42657, b/196074999) UWAGA: wymaga również aktualizacji do wersji androidx.profileinstaller:profileinstaller:1.1.0-alpha04 lub nowszej.
  • Testy porównawcze StartupMode.COLD i jeszcze CompilationMode.None są teraz bardziej stabilne. (I770cd, b/196074999)

Wersja 1.1.0-alpha06

18 sierpnia 2021 r.

androidx.benchmark:benchmark-*:1.1.0-alpha06 został zwolniony. Wersja 1.1.0-alpha06 zawiera te commity.

Zmiany w interfejsie API

  • Dodano argument androidx.benchmark.iterations, aby umożliwić ręczne zastąpienie liczby iteracji podczas testowania lub profilowania lokalnie. (6188be, b/194137879)

Poprawki błędów

  • W wersji 29 i nowszych interfejsu API domyślnym profilerem próbkowania jest Simpleperf (Ic4b34, b/158303822).

Znane problemy

  • CompilationMode.BaselineProfile jest w trakcie opracowywania. Nie używaj tej wartości, aby określić, jak dobry jest dany profil.

Wersja 1.1.0-alpha05

4 sierpnia 2021 r.

androidx.benchmark:benchmark-*:1.1.0-alpha05 został zwolniony. Wersja 1.1.0-alpha05 zawiera te commity.

1.1.0-alpha04 zostało anulowane przed wydaniem ze względu na sporadyczne awarie. b/193827052

Zmiany w interfejsie API

  • Zmieniliśmy metodę startActivityAndWait na wywołanie uruchamiania za pomocą am start, co zmniejsza czas każdej iteracji pomiaru o około 5 sekund, ale powoduje, że nie obsługujemy już obiektów parcelables w intencji. (I5a6f5, b/192009149

Poprawki błędów

  • Zmniejsz agresywność wykrywania ograniczania ze względu na temperaturę i ponownie oblicz wartości domyślne, jeśli ograniczenia są wykrywane często. (I7327b)
  • Poprawiono działanie klasy FrameTimingMetric w wersji beta Androida S (Ib60cc, b/193260119).
  • Użyj EmptyActivity, aby wymusić zatrzymanie aplikacji docelowej i w ten sposób lepiej obsługiwać CompilationMode.BaselineProfile. (Id7cac, b/192084204)
  • Zmieniono rozszerzenie pliku śladu na .perfetto-trace, aby było zgodne ze standardem platformy. (I4c236, b/174663039)
  • Wartość StartupTimingMetric jest teraz wyświetlana jako „fullyDrawnMs” i służy do pomiaru czasu, jaki upłynął od momentu rozpoczęcia tworzenia aplikacji do jego zakończenia. Aby zdefiniować te dane w aplikacji, wywołaj metodę Activity.reportFullyDrawn, gdy początkowa treść jest gotowa, np. gdy początkowe elementy listy są wczytane z bazy danych lub sieci. (metoda reportFullyDrawn jest dostępna bez sprawdzania wersji kompilacji w ComponentActivity). Pamiętaj, że test musi działać wystarczająco długo, aby zarejestrować dane (funkcja startActivityAndWait nie czeka na wywołanie metody reportFullyDrawn). (If1141, b/179176560)
  • Zmniejsz o ponad 50 ms koszt dołączania metadanych interfejsu do dzienników (Ic8390, b/193923003)
  • Drastycznie zwiększona częstotliwość odpytywania podczas zatrzymywania śledzenia, co może skrócić czas działania benchmarku na starcie o ponad 30% (Idfbc1, b/193723768)

Wersja 1.1.0-alpha03

16 czerwca 2021 r.

androidx.benchmark:benchmark-*:1.1.0-alpha03 został zwolniony. Wersja 1.1.0-alpha03 zawiera te commity.

Nowe funkcje

Poprawki błędów

  • Przykładowy kod Gradle do pomijania błędów testów porównawczych został zaktualizowany, aby używać interfejsu API, którego nie wycofano, z składnią, która obsługuje też użytkowników .gradle.kts.

    Np.

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

Wersja 1.1.0-alpha02

18 maja 2021 r.

Wersja testów porównawczych 1.1.0-alpha02 wprowadza do testów porównawczych ważny komponent – Macrobenchmark. Oprócz testu porównawczego, który umożliwia pomiar pętli procesora, test porównawczy makro umożliwia pomiar interakcji z całą aplikacją, np. uruchamiania i przewijania, oraz rejestrowanie śladów. Więcej informacji znajdziesz w dokumentacji biblioteki.

androidx.benchmark:benchmark-*:1.1.0-alpha02 został zwolniony. Wersja 1.1.0-alpha02 zawiera te commity.

Nowe funkcje

Dodano artefakty makrobenchmarków (androidx.benchmark:benchmark-macro-junit4androidx.benchmark:benchmark-macro)

  • rejestrowanie danych o skuteczności uruchamiania, przewijania i animacji aplikacji lokalnie lub w ramach CI;
  • Rejestrowanie i przeglądanie dzienników w Android Studio

Poprawki błędów

  • obejście problemu z uprawnieniami powłoki w przypadku katalogu danych wyjściowych na Androidzie 12 (uwaga: aby nadal rejestrować pliki wyjściowe na dotkniętych problemem urządzeniach, konieczne może być zaktualizowanie wtyczki Android Gradle do wersji 7.0.0 canary i Android Studio do wersji Arctic Fox [2020.3.1]). (Icb039)
  • Obsługa buforowania konfiguracji w BenchmarkPlugin (6be1c1, b/159804788)
  • Uproszczony format wyjściowy – domyślnie włączony w katalogu, który nie wymaga requestLegacyExternalStorage=true (8b5a4d, b/172376362).
  • Poprawiono ostrzeżenia w logcat dotyczące drukowania biblioteki, które informowały o nieobecności wątku JIT w wersjach platformy, w których go nie ma. (I9cc63, b/161847393)
  • Naprawiono problem z maksymalną częstotliwością urządzenia do czytania. (I55c7a)

Wersja 1.1.0-alpha01

10 czerwca 2020 r.

Funkcje androidx.benchmark:benchmark-common:1.1.0-alpha01, androidx.benchmark:benchmark-gradle-plugin:1.1.0-alpha01androidx.benchmark:benchmark-junit4:1.1.0-alpha01 są dostępne. Wersja 1.1.0-alpha01 zawiera te commity.

Nowe funkcje w wersji 1.1

  • Dane o przydziale – testy porównawcze wykonują teraz dodatkową fazę po rozgrzewce i określeniu czasu, rejestrując liczby przydziału. Przydziały mogą powodować problemy z wydajnością w starszych wersjach platformy (140 ns w wersji O stało się 8 ns w wersji M – pomiar na urządzeniu Nexus 5X z zablokowanymi zegarami). Te dane są wyświetlane w wyjściu konsoli Androida Studio oraz w 
  • Obsługa profilowania – możesz teraz rejestrować dane profilowania dla testu porównawczego, aby sprawdzić, dlaczego Twój kod działa wolno. Benchmark obsługuje tworzenie mapowania metody lub próbkowania metody z ART. Pliki te można sprawdzić za pomocą narzędzia Profilowanie w Android Studio (Plik > Otwórz).
  • Wtyczka Benchmark Gradle udostępnia teraz domyślne ustawienia, które ułatwiają konfigurację:
    • testBuildType jest domyślnie ustawiony na wersję, aby uniknąć używania zależności z wbudowanym pokryciem kodu. buildType wersji jest też skonfigurowany jako domyślny buildType, co pozwala Android Studio automatycznie wybierać odpowiedni wariant kompilacji podczas otwierania projektu po raz pierwszy. (b/138808399)
    • signingConfig.debug jest używany jako domyślna konfiguracja podpisywania (b/153583269).

** Poprawki błędów **

  • Znacznie zmniejszyliśmy obciążenie związane z rozgrzewką, w której pierwsze pomiary każdego benchmarka były sztucznie wyższe od pozostałych. Ten problem był bardziej widoczny w przypadku bardzo małych wartości porównawczych (1 mikrosekunda lub mniej). (b/142058671)
  • Usunięto błąd InstrumentationResultParser, który był drukowany w przypadku każdego testu porównawczego podczas uruchamiania z wiersza poleceń. (I64988, b/154248456)

Znane problemy

  • Wywołania Benchmarka w wierszu poleceń i w Gradle nie powodują bezpośredniego wydruku wyników. Aby obejść ten problem, możesz uruchomić Studio lub przeanalizować plik wyjściowy JSON w celu uzyskania wyników.
  • Raportowanie wyników porównawczych nie może pobrać raportu z urządzeń, na których jest zainstalowana aplikacja o identyfikatorze applicationId kończącym się na „android” lub „download” (niezależnie od wielkości liter). Użytkownicy, którzy napotykają ten problem, powinni uaktualnić wtyczkę Androida do obsługi Gradle do wersji 4.2-alpha01 lub nowszej.

Wersja 1.0.0

Wersja testów porównawczych 1.0.0

20 listopada 2019 r.

Wersje androidx.benchmark:benchmark-common:1.0.0, androidx.benchmark:benchmark-gradle-plugin:1.0.0androidx.benchmark:benchmark-junit4:1.0.0 są publikowane bez zmian w stosunku do wersji 1.0.0-rc01. Wersja 1.0.0 zawiera te zatwierdzenia:

Najważniejsze funkcje wersji 1.0.0

Biblioteka benchmarków umożliwia tworzenie benchmarków wydajności kodu aplikacji i szybkie uzyskiwanie wyników.

Zapobiega ona problemom z konfiguracją kompilacji i czasu działania oraz stabilizuje wydajność urządzenia, aby zapewnić dokładność i powtarzalność pomiarów. Uruchom testy porównawcze bezpośrednio w Android Studio lub w ramach ciągłej integracji, aby obserwować wydajność kodu w czasie i zapobiegać regresji.

Główne funkcje:

  • Stabilizacja zegara
  • Automatyczne nadawanie priorytetów wątkom
  • Obsługa testowania wydajności UI, np. w przypadku próbki RecyclerView
  • Wstępne wczytywanie i powtarzanie kodu z uwzględnieniem JIT
  • Dane wyjściowe testu porównawczego w formacie JSON na potrzeby dalszej obróbki

Wersja 1.0.0-rc01

23 października 2019 r.

Funkcje androidx.benchmark:benchmark-common:1.0.0-rc01, androidx.benchmark:benchmark-gradle-plugin:1.0.0-rc01androidx.benchmark:benchmark-junit4:1.0.0-rc01 są dostępne. Wersja 1.0.0-rc01 zawiera te zatwierdzenia

Nowe funkcje

  • Dodano śledzenie systrace do benchmarków

Poprawki błędów

  • Rozwiązano problem z niestabilnością danych, w którym JIT nie kończył się przed rozgrzewką z powodu obniżenia priorytetu (b/140773023).
  • Ujednolicony katalog wyjściowy JSON w wersjach wtyczki Androida do obsługi Gradle 3.5 i 3.6

Wersja 1.0.0-beta01

9 października 2019 r.

Funkcje androidx.benchmark:benchmark-common:1.0.0-beta01, androidx.benchmark:benchmark-gradle-plugin:1.0.0-beta01androidx.benchmark:benchmark-junit4:1.0.0-beta01 są dostępne. Wersja 1.0.0-beta01 zawiera te commity:

Nowe funkcje

  • Wykonywanie usuwania elementów z pamięci przed każdym rozgrzewaniem, aby zmniejszyć obciążenie pamięci w ramach jednego testu porównawczego i po jego zakończeniu (b/140895105)

Poprawki błędów

  • Dodano zależność androidx.annotation:android-experimental-lint, aby kod Java prawidłowo generował błędy lint, gdy nie jest używany eksperymentalny interfejs API, podobnie jak w przypadku eksperymentalnej adnotacji Kotlin dla wywołujących Kotlin.
  • Teraz poprawnie wykrywa użycie argumentu additionalTestOutputDir w Android Gradle Plugin 3.6, aby wiedzieć, kiedy AGP ma obsługiwać kopiowanie danych.
  • Napraw niewykrytą częstotliwość zegara w pliku JSON, aby poprawnie drukować -1 (b/141945670).

Wersja 1.0.0-alpha06

18 września 2019 r.

Funkcje androidx.benchmark:benchmark-common:1.0.0-alpha06, androidx.benchmark:benchmark-gradle-plugin:1.0.0-alpha06androidx.benchmark:benchmark-junit4:1.0.0-alpha06 są dostępne. Wersja 1.0.0-alpha06 zawiera te zatwierdzenia

Nowe funkcje

  • Dodano sprawdzanie nieprawidłowego używania starego pakietu w test runnerze, który teraz wyświetla bardziej przydatny komunikat o błędzie.

Zmiany w interfejsie API

  • Eksperymentalna adnotacja ExperimentalAnnotationReport jest teraz prawidłowo publiczna. Korzystanie z eksperymentalnego interfejsu API BenchmarkState#report wymaga teraz tej adnotacji

Wersja 1.0.0-alpha05

5 września 2019 r.

Funkcje androidx.benchmark:benchmark-common:1.0.0-alpha05, androidx.benchmark:benchmark-gradle-plugin:1.0.0-alpha05androidx.benchmark:benchmark-junit4:1.0.0-alpha05 są dostępne. Zmiany zawarte w tej wersji znajdziesz tutaj.

Zmiany w interfejsie API

  • Interfejs API BenchmarkState.reportData jest teraz oznaczony jako eksperymentalny

Poprawki błędów

  • Naprawiono skrypt blokowania zegara, który nie działał na urządzeniach, na których brakowało narzędzi cut lub expr.
  • Rozwiązaliśmy problem z zadaniem ./gradlew lockClocks, które zawieszało się na urządzeniach z uprawnieniami roota, na których była zainstalowana starsza wersja su, która nie obsługiwała flagi -c.

Wersja 1.0.0-alpha04

7 sierpnia 2019 r.

Funkcje androidx.benchmark:benchmark-common:1.0.0-alpha04, androidx.benchmark:benchmark-gradle-plugin:1.0.0-alpha04androidx.benchmark:benchmark-junit4:1.0.0-alpha04 są dostępne. Zmiany zawarte w tej wersji znajdziesz tutaj.

Dodano też nową dokumentację dotyczącą korzystania z biblioteki Benchmark bez Gradle, zarówno w przypadku różnych systemów kompilacji (takich jak Bazel czy Buck), jak i w ramach CI. Więcej informacji znajdziesz w artykułach Tworzenie testów porównawczych bez GradleUruchamianie testów porównawczych w ramach ciągłej integracji.

Nowe funkcje

  • Wtyczka Gradle
    • Teraz automatycznie wyłącza pokrycie testów i ustawi AndroidBenchmarkRunner jako domyślną wartość (b/138374050)
    • Dodano obsługę nowej funkcji kopiowania danych na podstawie AGP podczas uruchamiania testów porównawczych i korzystania z wersji AGP 3.6 lub nowszej.
  • Dodatki do formatu JSON
    • Wyjście: łączny czas testu porównawczego (b/133147694).
    • @Parameterized benchmarki, które używają ciągu znaków nazwy (np. @Parameters(name = "size={0},depth={1}")), teraz wyświetlają nazwy i wartości parametrów w wyjściu JSON (b/132578772).
  • Tryb próbny (b/138785848)
    • Dodano tryb „testu suchego” do uruchamiania każdej pętli testu porównawczego tylko raz, aby sprawdzić, czy nie występują błędy lub awarie, bez rejestrowania pomiarów. Może to być przydatne, np. do szybkiego uruchamiania testów porównawczych przed przesłaniem, aby sprawdzić, czy nie są uszkodzone.

Zmiany w interfejsie API

  • Zmieniono strukturę modułów, dzieląc bibliotekę (b/138451391)
    • benchmark:benchmark-junit4 zawiera klasy z zależnością od JUnit: AndroidBenchmarkRunnerBenchmarkRule, które zostały przeniesione do pakietu androidx.benchmark.junit4.
    • benchmark:benchmark-common zawiera pozostałą część logiki, w tym interfejs BenchmarkState API
    • Ten podział pozwoli w przyszłości korzystać z biblioteki do porównywania wyników bez interfejsów JUnit4 API.
  • Ostrzeżenia o konfiguracji są teraz traktowane jako błędy i spowodują przerwanie testu (b/137653596)
    • Ma to na celu zachęcenie do dokładniejszych pomiarów, zwłaszcza w przypadku CI.
    • Te błędy można zmienić na ostrzeżenia za pomocą argumentu instrumentacji. Na przykład: -e androidx.benchmark.suppressErrors "DEBUGGABLE,LOW_BATTERY"

Poprawki błędów

  • Błędy podczas zapisywania na zewnętrzną pamięć na urządzeniach Q wyświetlają bardziej szczegółowe komunikaty z sugestiami dotyczącymi rozwiązania problemu
  • ekrany są automatycznie włączane podczas testów porównawczych, zamiast nie działać, gdy są wyłączone;

Wkład zewnętrzny

  • Sergey Zakharov przyczynił się do ulepszenia danych wyjściowych w formacie JSON i naprawił problemy z wyłączeniem ekranu. Dziękujemy!

Wersja 1.0.0-alpha03

2 lipca 2019 r.

androidx.benchmark:benchmark:1.0.0-alpha03androidx.benchmark:benchmark-gradle-plugin:1.0.0-alpha03 są dostępne. Zmiany zawarte w tej wersji znajdziesz tutaj.

Nowe funkcje

  • Wyświetlanie czasu uśpienia z powodu ograniczenia termicznego w ramach poszczególnych testów porównawczych w pełnym raporcie w formacie JSON

Poprawki błędów

  • Wtyczka Gradle nie powinna już być wymagana po zastosowaniu wtyczek Androida i bloku Androida
  • Dodano obsługę raportów porównawczych na urządzeniach z Androidem 10 korzystających z ograniczonego miejsca na dane

Wersja 1.0.0-alpha02

6 czerwca 2019 r.

Zasoby androidx.benchmark:1.0.0-alpha02androidx.benchmark:benchmark-gradle-plugin:1.0.0-alpha02 są dostępne. Zmiany uwzględnione w tej wersji znajdziesz tutaj.

Pamiętaj, że schemat JSON jest traktowany jako interfejs API. Planujemy stosować te same ograniczenia stabilności co w przypadku innych interfejsów API: stabilne (z bardzo rzadkimi wyjątkami) w wersji beta, a poprawione w wersji produkcyjnej. Dodatki będą się pojawiać tylko w mniejszych wersjach, a zmiany/usunięcia w ważniejszych.

Zmiany w interfejsie API

  • Zmieniony schemat JSON. Dalsze zmiany w schemacie JSON będą prawdopodobnie ograniczone do dodatków:

    • Zmieniono strukturę obiektu wyników, aby w przyszłości można było obsługiwać dodatkowe grupy danych (b/132713021).
    • Dodano informacje o kontekście testu, takie jak informacje o urządzeniu i kompilacji oraz czy zegary są zablokowane, do obiektu najwyższego poziomu (b/132711920).
    • Nazwy danych dotyczących czasu zawierają teraz w swoim oznaczeniu „ns” (b/132714527).
    • Dodano dodatkowe statystyki na podstawie danych (maksimum, mediana, minimum) oraz usunięto uproszczone podsumowanie „nanos” (b/132713851).
  • Usunięto dane wyjściowe XML (b/132714414).

  • Wykrywanie ograniczenia ze względu na temperaturę zostało usunięte z interfejsu API BenchmarkState.reportData (b/132887006)

Poprawki błędów

  • Rozwiązano problem z urządzeniami z niektórymi nowszymi systemami operacyjnymi, na których nie działała funkcja ./gradlew lockClocks (b/133424037).
  • Wykrywanie ograniczania zostało wyłączone w emulatorze (b/132880807).

Wersja 1.0.0-alpha01

7 maja 2019 r.

androidx.benchmark:benchmark:1.0.0-alpha01 został zwolniony. Zmiany zawarte w tej wersji są dostępne tutaj.