Test porównawczy
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ą.
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")
wPerfettoTraceProcessor.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 ARTverify
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łaniaPerfettoSession.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 inonMinified
(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 funkcjiandroidx.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 zmianyCaptureInfo
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!
. TerazMacrobenchmarkScope.killProcess()
(w tym ten, który jest wykonywany przed każdą iteracją i służy do implementacji zachowaniaStartupMode.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
lockClocks
iunlockClocks
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 argumentowiskipBenchmarksOnEmulator
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 elementuMacrobenchmarkRule.measureRepeated()
do nowego obiektuExperimentalConfig
.
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 kompilacjinonMinified
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ą argumentucpuEventCounter.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…
ibenchmark…
, jeśli zostały utworzone przez aplikację, zamiast tworzyć opakowania. (Ia8934, b/361370179) - Naprawiono problem z
java.lang.AssertionError: ERRORS (not suppressed): EMULATOR
, gdyautomaticGenerationDuringBuild
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).
- Dodano
- 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 Twoimbuild.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 przezInstrumentationArgument
androidx.benchmark.cpuEventCounter.enable
(można ustawić jakotrue
), aandroidx.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
- Eksperymentalna funkcja licznika zdarzeń procesora (dane z
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ówmeasureBlocks
, 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)
- Teraz ślady metod są ograniczone do czasu trwania
- Prawidłowo zrzutować profil ART podczas poszczególnych iteracji
warmUp
, gdy proces jest zabijany, aby pomiaryCompilationMode.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 uruchamianiaStartupMode.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 niestandardowegoPerfettoConfig
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
.
- Uwaga:
- Dane
- Power - Added
PowerMetric.deviceSupportsHighPrecisionTracking
,PowerMetric.deviceBatteryHasMinimumCharge()
andPowerMetric.deviceSupportsPowerEnergy()
- Zmieniono nazwę
Metric.getResult
nagetMeasurements
, 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
doFrameTimingMetric
, 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)
- Power - Added
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
mergeArtProfile
imergeStartupProfile
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 kompilacjinonMinified
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 wTraceProcessor
(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.IDcontext.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)
- Dodano dodatkowe informacje w kontekście testu porównawczego w wyniku w formacie JSON:
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ą argumentucpuEventCounter.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
naAFFECTS_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ą funkcjiProfilerConfig.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ącaandroidx.benchmark.profiling.sampleDurationSeconds
(Ib1d53) - Zmień makro->zależność wspólna na
api()
, aby ułatwić korzystanie z funkcjiPerfettoTrace
iPerfettoConfig
. (Icdae3, b/341851833) - Upewnij się, że zadania
mergeArtProfile
imergeStartupProfile
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 niestandardowegoPerfettoConfig
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
naPowerMetric.deviceSupportsHighPrecisionTracking
, aby zwiększyć przejrzystość (I5b82f) - Dodaliśmy opcje
PowerMetric.deviceBatteryHasMinimumCharge()
iPowerMetric.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
i.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 kompilacjinonMinified
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
doFrameTimingMetric
, 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)
- Dodaj
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 uruchamianiaStartupMode.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ównawczychStartupMode.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
- W logach wykonania ścieżka wyjściowego pliku profilu bazowego będzie widoczna jako identyfikator URI pliku lokalnego (aosp/2843918, aosp/2853665, b/313976958).
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 APIBaselineProfileRule.collectBaselineProfile
.- Wystarczy, że określisz
packageName
i promujesz aplikację
- Wystarczy, że określisz
- 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
- Naprawiono zbieranie profilu bazowego na Androidzie U+ (Id1392, b/277645214).
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=StackSampling
iMethodTracing
. - 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 funkcjiStartupMode.COLD
czasy mogą się znacznie wydłużyć, ponieważ biblioteka śledzenia jest wczytywana i włączana podczas uruchamiania aplikacji.
- Obsługa argumentu sterowania
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.
- Macrobenchmark wymaga teraz wersji
Nowe eksperymentalne interfejsy API danych
- Dodano eksperymentalną funkcję
TraceSectionMetric
, która umożliwia wyodrębnianie prostych ustawień czasu z blokówtrace("") {}
w aplikacji, lub funkcję TraceMetric, która umożliwia wykorzystanie pełnych możliwości zapytań PerfetoTraceProcessor
. - 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).
- Dodano eksperymentalną funkcję
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 przezMacrobenchmarkScope.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 odBenchmarkRule
bez JUnit. - Dodano eksperymentalny rekord
PerfettoTrace
, aby umożliwić rejestrowanie dzienników perfetto z użyciem niestandardowej konfiguracji, oddzielnie od interfejsów benchmarkowych.
- Dodano eksperymentalny interfejs API
- 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 pomijaniuIsolationActivity
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
naperfettoSdkTracing.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
naapi
zamiastimplementation
. (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 naBaselineProfileRule.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 APIcollectStableBaselineProfile
został usunięty. Zamiast niego należy używać interfejsucollectBaselineProfile
. (I17262, b/281078707) - Zmiana argumentu
filterPredicate
funkcjiBaselineProfileRule
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 wdryRunMode
, 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=StackSampling
iandroidx.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 animacjiRenderThread
(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łączeniaUiAutomation
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
MacrobenchmarkRule
iBaselineProfileRule
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 parametruandroidx.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 {}
iPerfettoTraceRule
, 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ównawczychStartupMode.COLD
zniknie szum o okresie około 20 ms, ponieważ shadery są teraz konsekwentnie czyszczone w każdej iteracji. Wcześniej kompilacjaPartial
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 bibliotekiprofileinstaller:1.3.0-alpha02
w aplikacji docelowej. Informacje o zmianach w interfejsie API bibliotekiProfileInstaller
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ładTraceSectionMetric("inflate", Mode.Sum)
będzie podawać daneinflateMs
dotyczące łącznego czasu w makrobencmarku poświęconego na inflację. Usunięto też wymóg interfejsu API 29, ponieważTraceSectionMetric
działa razem zandroidx.tracing.Trace
w wersjach na niższych poziomach interfejsu API, z wykorzystaniemforceEnableAppTracing
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, żeStartupMode.COLD
nie zabijał procesu docelowego po wykonaniu instrukcjisetupBlock
. TerazsetupBlock
, 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
lubCompilationMode.Partial(warmupIterations)
na urządzeniu bez uprawnień roota, musisz też zaktualizować aplikację docelową, aby używać funkcjiandroidx.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
, abyFrameOverrun
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 przezMacrobenchmarkScope.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ługBenchmarkRule
/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
dlaMacrobenchmarkScope.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 generowaniaBaselineProfiles
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
TotalPowerMetric
iTotalEnergyMetric
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 z1.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
Obsługa testów makro Jetpacka, która umożliwia pomiar interakcji z całą aplikacją, np. uruchamiania i przewijania, zapewnia możliwość rejestrowania śladów i pomiaru ich fragmentów.
Obsługa profili podstawowych
CompilationMode.Partial
, aby mierzyć skuteczność profili referencyjnych.@BaselineProfileRule
, aby automatycznie generować profile podstawowe dla danej kluczowej ścieżki użytkownika.
Obsługa danych i profilowania przydziału podczas wykonywania mikrotestów.
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
Unikaj ponownej instalacji docelowego pakietu na każdym etapie testowania porównawczego. ( aosp/2093027, b/231976084)
Usuń opóźnienie
300ms
zpressHome()
. (aosp/2086030, b/231322975)Zwiększenie szybkości iteracji Macrobenchmark dzięki optymalizacji poleceń Shell używanych w tle. (aosp/2086023, b/231323582)
Obsługa zarządzanych urządzeń Gradle podczas generowania profili referencyjnych za pomocą Macrobenchmarks. (aosp/2062228, b/228926421)
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 generowaniaBaselineProfiles
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ługi
StartupMode.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 wersjiandroidx.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ż blokusetup
, ponieważ działa on tak samo jak blokadaprofileBlock
. (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
lubandroidx.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
jakoNone
(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 wersjiandroidx.profileinstaller:profileinstaller:1.1.0-alpha04
lub nowszej. - Testy porównawcze
StartupMode.COLD
i jeszczeCompilationMode.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
- Dodano nową wartość
CompilationMode.BaselineProfile
, aby obsługiwać profile instalowane za pomocą biblioteki Jetpack ProfileInstaller. (aosp/1720930)
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-junit4
i androidx.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-alpha01
i androidx.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.0
i androidx.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-rc01
i androidx.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-beta01
i androidx.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-alpha06
i androidx.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-alpha05
i androidx.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
lubexpr
. - 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-alpha04
i androidx.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 Gradle i Uruchamianie 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.
- Teraz automatycznie wyłącza pokrycie testów i ustawi
- 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:AndroidBenchmarkRunner
iBenchmarkRule
, które zostały przeniesione do pakietuandroidx.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-alpha03
i androidx.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-alpha02
i androidx.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.