Test porównawczy
| Najnowsza aktualizacja | Wersja stabilna | Wersja kandydująca do publikacji | Wersja beta | Wersja alfa |
|---|---|---|---|---|
| 7 października 2026 r. | 1.5.0 | - | - | 1.6.0-alpha01 |
Deklarowanie zależności
Aby dodać zależność od testu porównawczego, musisz dodać do projektu repozytorium Maven Google. Więcej informacji znajdziesz w repozytorium Maven Google.
Makrobenchmark
Aby używać Macrobenchmark w projekcie, dodaj do pliku build.gradle modułu macrobenchmark te zależności:
Groovy
dependencies { androidTestImplementation "androidx.benchmark:benchmark-macro-junit4:1.5.0" }
Kotlin
dependencies { androidTestImplementation("androidx.benchmark:benchmark-macro-junit4:1.5.0") }
Mikrotest porównawczy
Aby używać Microbenchmark w projekcie, dodaj te zależności do pliku build.gradle w module mikropomiarów:
Groovy
dependencies { androidTestImplementation "androidx.benchmark:benchmark-junit4:1.5.0" } android { ... defaultConfig { ... testInstrumentationRunner "androidx.benchmark.junit4.AndroidBenchmarkRunner" } }
Kotlin
dependencies { androidTestImplementation("androidx.benchmark:benchmark-junit4:1.5.0") } android { ... defaultConfig { ... testInstrumentationRunner = "androidx.benchmark.junit4.AndroidBenchmarkRunner" } }
Biblioteka Microbenchmark zawiera też wtyczkę Gradle do użycia z modułem mikrobenchmarków.
Ten wtyczek ustawia domyślne konfiguracje kompilacji dla modułu, konfiguruje kopię danych wyjściowych testu porównawczego na hoście i zapewnia zadanie
./gradlew lockClocks.
Aby użyć tego wtyczki, umieść ten wiersz w bloku „plugins” w pliku najwyższego poziomu build.gradle:
Groovy
plugins { id 'androidx.benchmark' version '1.5.0' apply false }
Kotlin
plugins { id("androidx.benchmark") version "1.5.0" apply false }
Następnie zastosuj wtyczkę do pliku build.gradle modułu testów porównawczych.
Groovy
plugins { id 'androidx.benchmark' }
Kotlin
plugins { id("androidx.benchmark") }
Prześlij opinię
Twoja opinia pomoże nam ulepszyć Jetpacka. Jeśli odkryjesz nowe problemy lub masz pomysły na ulepszenie tej biblioteki, daj nam znać. Zanim utworzysz nową kartę, zapoznaj się z dotychczasowymi problemami w tej bibliotece. Możesz dodać swój głos do istniejącego problemu, klikając przycisk gwiazdki.
Więcej informacji znajdziesz w dokumentacji narzędzia Issue Tracker.
Wersja 1.6
Wersja 1.6.0-alpha01
7 października 2026 r.
Publikacja androidx.benchmark:benchmark-*:1.6.0-alpha01 Wersja 1.6.0-alpha01 zawiera te zmiany.
Nowe funkcje
- Zadanie testu porównawczego
:lockClockskorzysta teraz ze stałego trybu wydajności, gdy jest on dostępny, zamiast poprzedniej implementacji tylko dla użytkowników root. Oznacza to, że możesz zablokować zegary na wielu innych urządzeniach fizycznych, aby uzyskać stabilne wyniki, co jest szczególnie przydatne w przypadku stabilnych mikrotestów porównawczych. Jeśli zauważysz problemy z nowym zachowaniem, zgłoś je. (I0d032)
Zmiany w interfejsie API
- Dodano
MemoryProfilingConfigdoExperimentalConfig, aby umożliwić uruchomieniom makrotestów porównawczych korzystanie z profilowania sterty Perfetto. (Ibc931)
Poprawki błędów
- Naprawiliśmy błąd w mikrotestach porównawczych, który powodował, że czasami zbyt ostrożnie pomijano rejestrowanie śladu metody, aby uniknąć błędów ANR. (Ifc307)
- Naprawiono błąd związany z przechwytywaniem profilu Baseline w przypadku procesów, które nie używają wzorca nazewnictwa
:<suffix>. (I512ab) - Linki do logów czasu profilera są teraz raportowane w osobnej sekcji „Logi czasu profilowania” w podsumowaniach IDE. (Id639f)
- Usunięto błąd w opróżnianiu pliku wirtualnego, który powodował
Unable to flush profiles for <packagename>. (I48ccc) - Popraw synchronizację w śladach metod osadzonych w śladzie systemu. Ifd2e33 b/537688349
- Wtyczka Gradle profilu Baseline – ulepszyliśmy
CollectBaselineProfileTask, aby obsługiwała wyszukiwanie plikówtest-result.pbw podkatalogach, co zapewnia zgodność z nową wbudowaną platformą testową. Id9c488 b/543799367
Wersja 1.5
Wersja 1.5.0
9 września 2026 r.
Publikacja androidx.benchmark:benchmark-*:1.5.0 Wersja 1.5.0 zawiera te zatwierdzenia.
Wersja 1.5.0-rc02
26 sierpnia 2026 r.
Publikacja androidx.benchmark:benchmark-*:1.5.0-rc02 Wersja 1.5.0-rc02 zawiera te zatwierdzenia.
Wersja 1.5.0-rc01
12 sierpnia 2026 r.
Publikacja androidx.benchmark:benchmark-*:1.5.0-rc01 Wersja 1.5.0-rc01 zawiera te zatwierdzenia.
Wersja 1.5.0-beta01
29 lipca 2026 r.
Publikacja androidx.benchmark:benchmark-*:1.5.0-beta01 Wersja 1.5.0-beta01 zawiera te zatwierdzenia.
Zmiany w interfejsie API
PerfettoCaptureiPerfettoTraceRulemogą teraz przechwytywać logi czasu procesów i łączyć je w przypadku pakietu docelowego. (I9a00b, b/497959820)
Wersja 1.5.0-alpha07
1 lipca 2026 r.
Publikacja androidx.benchmark:benchmark-*:1.5.0-alpha07 Wersja 1.5.0-alpha07 zawiera te zmiany.
Zmiany w interfejsie API
- Uproszczone przechwytywanie śladów Perfetto na urządzeniu. (I48810)
- Przenieś eksperymentalne interfejsy API
TraceProcessor.runServerzandroidx.benchmark:benchmark-macrodoandroidx.benchmark:benchmark-commoni do pakietuandroidx.benchmark. Umożliwi to ich wykorzystanie w mikrotestach w przyszłości. (Ie25bb, b/393640753)
Poprawki błędów
- Zaktualizowano implementację procesora śladów (oraz niepowiązane przechwytywanie śladów Perfetto), aby używać Perfetto w wersji 56.0 (I8fb9d).
- Domyślnie ustaw
androidx.benchmark.requireAotiandroidx.benchmark.requireAotna wartość „true”. Te bezpieczniejsze ustawienia domyślne zapewniają, że kompilacja jest wykonywana przed uruchomieniem mikrotestów porównawczych (domyślnie włączone we wtyczce Gradle do testów porównawczych, gdy używasz AGP w wersji 8.4 lub nowszej) oraz żemeasureRepeatednie jest używany w wątku głównym, gdzie może powodować błędy ANR. (I1bc3c, b/379115078) - Wydłużono limit czasu zakończenia Perfetto z 5 do 30 sekund (tylko w przypadku sesji Perfetto przechwyconych przez test porównawczy). Dodaliśmy bardziej przejrzyste rejestrowanie błędów, gdy wystąpi problem. (If188f, b/435589290)
Wersja 1.5.0-alpha06
6 maja 2026 r.
Publikacja androidx.benchmark:benchmark-*:1.5.0-alpha06 Wersja 1.5.0-alpha06 zawiera te zmiany.
Poprawki błędów
- Lepsza obsługa środowisk wielu użytkowników podczas przenoszenia plików z katalogu wyjściowego testu porównawczego do katalogu wyjściowego testu dodatkowego. (I90da5, b/489358149)
Wersja 1.5.0-alpha05
25 marca 2026 r.
Publikacja androidx.benchmark:benchmark-*:1.5.0-alpha05 Wersja 1.5.0-alpha05 zawiera te zmiany.
Poprawki błędów
- Zaktualizowano
ArtMetric, aby uwzględnić pakiety najwyższego poziomu, co jest szczególnie ważne w przypadku korzystania z AGP/R8 9.1+ lub opcji globalnej-repackageclasses. WcześniejArtMetricnie wykrywał tych wczytań klas w pomiarachartClassLoad.... (If8a35, b/487402058)
Nowe funkcje
- Dodano nowy argument instrumentacji androidx.benchmark.requireLockedClocks, który umożliwia włączenie sprawdzania, czy zegary procesora są zablokowane na urządzeniach z dostępem do roota. (Id82e8, b/468039042)
Wersja 1.5.0-alpha04
11 marca 2026 r.
Publikacja androidx.benchmark:benchmark-*:1.5.0-alpha04 Wersja 1.5.0-alpha04 zawiera te zmiany.
Zmiany w interfejsie API
- Dodano
JvmOverloadsdoPowerMetric.EnergyiPowerMetric.Power(Iac0d0, b/481371562).
Poprawki błędów
- Zaktualizowano
ArtMetric, aby uwzględnić pakiety najwyższego poziomu, co jest szczególnie ważne w przypadku korzystania z AGP/R8 9.1+ lub opcji globalnej-repackageclasses. WcześniejArtMetricnie wykrywał tych wczytań klas w pomiarachartClassLoad.... (I207ca, b/487402058)
Wersja 1.5.0-alpha03
11 lutego 2026 r.
Publikacja androidx.benchmark:benchmark-*:1.5.0-alpha03 Wersja 1.5.0-alpha03 zawiera te zatwierdzenia.
- Zaktualizowano, aby zależał od wersji beta UiAutomator 2.4.
Wersja 1.5.0-alpha02
28 stycznia 2026 r.
Publikacja androidx.benchmark:benchmark-*:1.5.0-alpha02 Wersja 1.5.0-alpha02 zawiera te zatwierdzenia.
Poprawki błędów
Dodano częściową obsługę generowania profilu podstawowego dla modułów Kotlin Multiplatform. Zależności od profili można zwykle definiować za pomocą konfiguracji Gradle
baselineProfilew bloku zależności, ale obecnie nie działa to w przypadku modułów KMP.kotlin { androidLibrary { namespace = "com.example.namespace" compileSdk = 36 } sourceSets { androidMain.dependencies { // THIS DOES NOT WORK // baselineProfile(":yourProducerProject") } } }Zamiast tego należy zdefiniować zależności za pomocą rozszerzenia
baselineProfile**. (Ie19c4)plugins { id("org.jetbrains.kotlin.multiplatform") id("com.android.kotlin.multiplatform.library") id("androidx.baselineprofile.consumer") } kotlin { androidLibrary { namespace = "com.example.namespace" compileSdk = 36 } sourceSets { androidMain.dependencies { // ... } } } // Define dependencies // This works ! baselineProfile { variants { androidMain { from(project(":yourProducerProject")) } } }
Wersja 1.5.0-alpha01
17 grudnia 2025 r.
Publikacja androidx.benchmark:benchmark-*:1.5.0-alpha01 Wersja 1.5.0-alpha01 zawiera te zmiany.
- Macrobenchmark 1.5 używa
UiAutomator2.4, aby uprościć interakcję z mierzoną aplikacją. Obiekt MacrobenchmarkScope rozszerza teraz UiAutomatorTestScope, co umożliwia korzystanie z nowoczesnych interfejsów APIUiAutomator, takich jakonElement { ... }.click(). - Więcej informacji o
UiAutomator2.4 znajdziesz w dokumentacji.
Nowe funkcje
- Wtyczka Gradle profilu podstawowego nie wymaga już
newDsl=falsew AGP 9.0 (Iaaac7, b/443311090) - Rozszerz konfigurację śledzenia, aby uwzględniała podstawowy rozmiar (np. mały/duży) w testach porównawczych przechwytywanych śladów systemowych/Perfetto. (I8e397, b/457469959)
Zmiany w interfejsie API
- (W UiAutomator) Zmieniono
startActivityna czekanie na nowe okno. (I35da6, b/440021797) - Ustabilizowanie interfejsów API
BlackHolew androidx.benchmark. (I2b67e, b/451749438) - Dodaj
@JvmOverloadsdo konstruktorów ułatwiających dlaPerfettoTraceRule. (I1510a, b/443763207)
Wersja 1.4
Wersja 1.4.1
10 września 2025 r.
Publikacja androidx.benchmark:benchmark-*:1.4.1 Wersja 1.4.1 zawiera te zmiany.
Poprawki błędów
- Naprawiliśmy błąd
perfettoSdkTracing=true(np. podczas śledzenia Compose w mikrotestach porównawczych), który powodował, że proces docelowy był przerywany, jeśli był już uruchomiony, a tryb StartupMode nie został określony. (Ib2c1f)
Wersja 1.4.0
30 lipca 2025 r.
Publikacja androidx.benchmark:benchmark-*:1.4.0 Wersja 1.4.0 zawiera te zatwierdzenia.
Ważne zmiany od wersji 1.3.0
Mikrotest
- Zadania Gradle
lockClocksiunlockClockszostały przeniesione do projektów testów porównawczych, a nie na najwyższy poziom, aby zachować izolację projektu Gradle. - Zrefaktoryzowano
BenchmarkRule, aby opierał się na współprogramach i lepiej obsługiwałyield(). Powinno to znacznie zmniejszyć ryzyko wystąpienia błędów ANR podczas testów porównawczych, zwłaszcza długich testów CI. Uwaga: testy porównawcze interfejsu powinny być przeprowadzane z parametremmeasureRepeatedOnMainThread.
Macrobenchmark
- Dodano obejście problemu w interfejsie API 34 i nowszych, który powodował, że funkcja
CompilationMode.None()działała niespójnie, ponieważ ART częściowo kompilował aplikacje po pierwszym uruchomieniu. - Funkcja eksperymentalna – statystyki dotyczące uruchamiania mogą wyróżniać niektóre typowe problemy w makrobenchmarku uruchamiania, przekazując
MacrobenchmarkRule(..., experimentalConfig = ExperimentalConfig(StartupInsightsConfig(isEnabled = true))). - Dodaliśmy ArtMetric, który może służyć do wykrywania kompilacji JIT i niezoptymalizowanego wczytywania klas. Obie te funkcje są przydatne do sprawdzania optymalizacji profilu Baseline.
Profile podstawowe
BaselineProfileRulezbiera teraz profile aplikacji wieloprocesowych.
Inne zmiany
- TraceProcessor został wyodrębniony do osobnej biblioteki (
androidx.benchmark:benchmark-traceprocessor), aby można go było używać w innych przypadkach poza danymiMacrobenchmark. Można go też uruchomić na komputerowej maszynie JVM, definiując własny ServerLifecycleManager.
Wersja 1.4.0-rc01
18 czerwca 2025 r.
Publikacja androidx.benchmark:benchmark-*:1.4.0-rc01 Wersja 1.4.0-rc01 zawiera te zatwierdzenia.
Poprawki błędów
- Dodano obejście problemu z obrazami środowiska wykonawczego, które powodowały, że
CompilationMode.None()nie mierzyło najgorszej wydajności po pierwszej iteracji. Niestety to obejście wymaga 5-sekundowego opóźnienia, aby celowo uszkodzić obraz środowiska wykonawczego na początku każdego zestawu testów makrobenchmarku (I4a4f1).
Wersja 1.4.0-beta02
4 czerwca 2025 r.
Publikacja androidx.benchmark:benchmark-*:1.4.0-beta02 Wersja 1.4.0-beta02 zawiera te zmiany.
Zmiany w interfejsie API
- Dodaliśmy
BaselineProfileConfig.Builder, aby ułatwić wywoływanieBaselineProfileRule.collectWithResults()programistom Java. (I94905)
Wersja 1.4.0-beta01
7 maja 2025 r.
Publikacja androidx.benchmark:benchmark-*:1.4.0-beta01 Wersja 1.4.0-beta01 zawiera te zmiany.
Zmiany w interfejsie API
- Dodano wariant konstruktora
PerfettoTraceRule, który akceptujePerfettoConfig(Ie53ba).
Poprawki błędów
- Zaktualizowano format linku do statystyk dotyczących startupów
TraceProcessor, aby używać prawidłowej wtyczki i wyraźniejszego separatora (:jest krótszy niż%3A, ale oba są obsługiwane) (Ie18ef). - Zawsze używaj wymuszonego zatrzymania, aby zamykać procesy, nawet w przypadku zrootowanego urządzenia i zamykania aplikacji systemowych. Naprawia wyjątki w formularzu:
Expected no stdout/stderr from killall ... No such process. (Idca2c)
Wkład zewnętrzny
- Dodano moduł obsługi wyjątków proxy dla
TraceProcessorHttpServer(I480f5)
Wersja 1.4.0-alpha11
9 kwietnia 2025 r.
Publikacja androidx.benchmark:benchmark-*:1.4.0-alpha11 Wersja 1.4.0-alpha11 zawiera te zmiany.
Zmiany w interfejsie API
- Zmieniono argument
TraceProcessor: czas oczekiwania na odpowiedź na timeoutMs na potrzeby wywołującego w języku Java. (I9fbb5) - Oznacz konstruktor
TraceProcessorjako wewnętrzny. Elementy wywołujące powinny używaćTraceProcessor.startServerlubTraceProcessor.runServer. (Ia8c5b)
Poprawki błędów
- Podczas kończenia działania aplikacji za pomocą polecenia
MacrobenchmarkScope.killProcesssprawdź wyniki polecenia, aby zapobiec cichemu niepowodzeniu i błędowi przekroczenia limitu czasu. (I84555)
Aktualizacje zależności
- Ta biblioteka jest teraz kierowana na poziom języka Kotlin 2.0 i wymaga KGP w wersji 2.0.0 lub nowszej. (Idb6b5)
Wersja 1.4.0-alpha10
26 marca 2025 r.
Publikacja androidx.benchmark:benchmark-*:1.4.0-alpha10 Wersja 1.4.0-alpha10 zawiera te zmiany.
Zmiany w interfejsie API
- Zwiększyliśmy domyślny limit czasu oczekiwania na wczytanie i odpytanie serwera
TraceProcessordo 120 sekund (wcześniej było to 60/30 sekund) i umożliwiliśmy konfigurowanie obu tych parametrów za pomocą jednego parametru limitu czasu oczekiwania. (Ifec87)
Poprawki błędów
- Naprawiliśmy kilka problemów, które występowały podczas testów porównawczych lub przechwytywania profili aplikacji bez
profileinstaller, i uwzględniliśmyBroadcastReciever. Dotyczy to tylko uruchomień na urządzeniach z dostępem do roota. (Ied308)
Wersja 1.4.0-alpha09
12 marca 2025 r.
Publikacja androidx.benchmark:benchmark-*:1.4.0-alpha09 Wersja 1.4.0-alpha09 zawiera te zmiany.
Zmiany w interfejsie API
- Dodano
TraceProcessori Session API z uchwytami, które można zamknąć, co ułatwia korzystanie z niestandardowych cykli życia. Jest to też krok w kierunku ułatwienia korzystania z interfejsów Coroutine i Java API. Funkcje rozszerzenia doTraceProcessor.runServer {}są teraz oznaczone jako eksperymentalne, ponieważ prawdopodobnie zostaną przeniesione i w przyszłości przestaną być eksperymentalne. (I358b4)
Poprawki błędów
- Naprawiono problem z nieprawidłowym działaniem funkcji Fixed Benchmark i Baseline Profile w przypadku interfejsu API 36 z powodu zmiany w
pgreptoybox, która wymaga teraz-ado drukowania pełnego wiersza poleceń. (Idc991) - Filtrowanie domyślnej konfiguracji śledzenia w celu zmniejszenia ryzyka utraty danych w śladach na nowszych poziomach interfejsu API. (I54e8a)
- Dodano eksperymentalny argument instrumentacji
androidx.benchmark.killExistingPerfettoRecordings, który można ustawić nafalse, aby umożliwić kontynuowanie istniejącego przechwytywania śladów Perfetto. Domyślnie istniejące już na urządzeniu ślady Perfetto są usuwane, aby zapobiec zakłóceniom. (I02a3c) - Pole JSON
context.osCodenameAbbreviatedbędzie teraz miało wartośćRELw przypadku opublikowanych wersji systemu operacyjnego z interfejsem API 35 lub nowszym, ponieważ platforma nie obsługuje już nienumerycznych kryptonimów. (Ib17fd) - Naprawiliśmy błąd powodujący awarię w
FrameTimingMetric, gdy występują ponownie zsynchronizowane klatki. (I7c6f4, b/394610806) - Nie zakładaj już, że
Choreographer#doFrameto góra ramki stosu w głównym wątku dlaFrameTimingQuery. (Iee0e0, b/340206285)
Wersja 1.4.0-alpha08
12 lutego 2025 r.
Publikacja androidx.benchmark:benchmark-*:1.4.0-alpha08 Wersja 1.4.0-alpha08 zawiera te zmiany.
Zmiany w interfejsie API
- Przenieśliśmy interfejsy API rozszerzeń
TraceProcessor.runSession()do wersji eksperymentalnej, ponieważ prawdopodobnie zostaną one ostatecznie przeniesione do konkretnych konstruktorów na Androidzie. (Ib0528, b/393640753) - Większość implementacji Startup Insights jest teraz publiczna lub eksperymentalna i przenosi się do artefaktu
TraceProcessor. Więcej informacji znajdziesz wStartupInsights. (I0aa00) - Wycofanie
BenchmarkRule.runWithTimingDisabled {}na rzeczBenchmarkRule.runWithMeasurementDisabled {}, które dokładniej opisuje działanie – wszystkie dane są wstrzymane. Dodatkowo udostępnij klasę nadrzędnąMicrobenchmarkScope, ponieważ ponowne zadeklarowanie funkcjirunWithMeasurementDisabledw celu otwarcia dostępu nie jest możliwe, ponieważ jest ona wbudowana. (I9e23b, b/389149423, b/149979716) - Biblioteki testów porównawczych zostały przeniesione do Kotlin 2.0. (I9d1e0)
- Usunięto argument instrumentacji
androidx.benchmark.startupProfiles.enable. Nie jest już przydatna, ponieważ można nią sterować za pomocą argumentuincludeInStartupProfilewBaselineProfileRule.collect(). (I39eb4)
Poprawki błędów
- Zmniejszono liczbę wywołań funkcji wewnętrznych Microbenchmark podczas profilowania, aby np.ślady metod były bardziej przejrzyste (Ifaed8).
- Potencjalna poprawka dotycząca awarii: „Nie udało się zatrzymać [
ProcessPid(processName=perfetto, pid=...)]”. Teraz Benchmark będzie rejestrować komunikat zamiast ulegać awarii, gdy nie będzie można zatrzymać procesu Perfetto w tle przed uruchomieniem testu porównawczego. (I37d3e, b/323601788) - Naprawiono błędy
IllegalStateExceptionsz etykietą „Expectedpm dump-profilesstdout”, które były spowodowane zbyt rygorystycznym sprawdzaniem formatu danych wyjściowych. (I358dc)
Wersja 1.4.0-alpha07
29 stycznia 2025 r.
Publikacja androidx.benchmark:benchmark-*:1.4.0-alpha07 Wersja 1.4.0-alpha07 zawiera te commity.
Nowe funkcje
BaselineProfileRulewprowadza teraz interfejs APIcollectWithResults(...), który zawiera listę ścieżek do obliczonych profili. (I056f8)- Dodano argument
androidx.benchmark.measureRepeatedOnMainThread.throwOnDeadlineinstrumentation, który można ustawić na wartość false, aby wyłączyć zachowaniemeasureRepeatedOnMainThreadpolegające na zgłaszaniu wyjątku po upływie terminu w przypadku testów lokalnych. Nie zalecamy tego, ponieważ zwiększa to prawdopodobieństwo wystąpienia błędów ANR podczas testów. (Idbeec, b/353226476)
Zmiany w interfejsie API
- Dodano
@JvmOverloadsdo konstruktoraMicrobenchmarkConfig. (I13fd3) - Przebudowano
BenchmarkRule, aby działał na podstawie korutyn i lepiej obsługiwałyield(). W ramach tej refaktoryzacji usunięto kilka eksperymentalnych interfejsów APIBenchmarkState, ale w razie potrzeby zostaną one zastąpione. Dodatkowo dodanorunWithMeasurementDisabled, aby wyjaśnić działanie (wszystkie pomiary są wstrzymane). W przyszłości zasadarunWithTimingDisabledzostanie wycofana. (I19837, b/389149423, b/311242861) - Przenieś
PerfettoTraceProcessordoTraceProcessorw nowym artefakcieandroidx.benchmark:benchmark-traceprocessori spraw, aby większość jego interfejsu API nie była eksperymentalna. Wszystkie niestandardoweTraceMetriclub inne elementy odczytujące dane ze śladów będą musiały zostać zaktualizowane do nowego importuTraceProcessor. Nowy interfejs APITraceProcessordziała dokładnie tak samo jak stary, ale jest samodzielną biblioteką interfejsu (podobną do warstwyandroidx.sqlitez Room) z implementacją na Androida wbudowaną w makrobenchmark. Nowy artefakt można też używać na maszynie JVM, ale obecnie musisz uruchomić własną kopię pliku binarnegoTraceProcessori udostępnić port, z którym można się połączyć. (I3a767, I62563, b/381134564)
Poprawki błędów
- Wyświetlanie bardziej zrozumiałego komunikatu o błędzie, gdy
MacrobenchmarkScope.startActivityAndWaitnie może uruchomić procesu docelowego (potencjalnie z powodu awarii procesu docelowego), zamiast bardziej niejednoznacznego komunikatu „Nie udało się potwierdzić zakończenia uruchamiania aktywności” (I3539b) - Naprawiliśmy kilka błędów składni w przykładach w języku Kotlin oraz podświetlanie składni w kilku przykładach w języku Java i plikach build.gradle. (Ib3808)
- Doprecyzowana dokumentacja parametrów
ArtMetriciCaptureInfo. (I96e60)
Wersja 1.4.0-alpha06
11 grudnia 2024 r.
Publikacja androidx.benchmark:benchmark-*:1.4.0-alpha06 Wersja 1.4.0-alpha06 zawiera te zmiany.
Zmiany w interfejsie API
- Usunięto użycie
@Language("sql")wPerfettoTraceProcessor.Session.query(), ponieważ podświetlanie/analizowanie w Studio nie działa. (Idc2fa, b/377733398)
Poprawki błędów
- Ta biblioteka używa teraz adnotacji JSpecify nullness, które są adnotacjami typu type-use. Deweloperzy Kotlin powinni używać tego argumentu kompilatora, aby wymusić prawidłowe użycie:
-Xjspecify-annotations=strict(jest to ustawienie domyślne od wersji 2.1.0 kompilatora Kotlin). (I46810, b/326456246) - Poprawiliśmy
ArtMetric, aby zgłaszać wczytywanie klasy (nie inicjowanie), i ulepszyliśmy dokumentację, aby wyjaśnić działanie środowiska wykonawczego. (I9915c) - W przypadku wielu użytkowników Androida wykonuj polecenia jako użytkownik root tylko na urządzeniach z dostępem do roota. (I88b44)
Wersja 1.4.0-alpha05
13 listopada 2024 r.
Publikacja androidx.benchmark:benchmark-*:1.4.0-alpha05 Wersja 1.4.0-alpha05 zawiera te zmiany.
Poprawki błędów
- Rozwiązaliśmy problem z interfejsem API na poziomie 34 lub wyższym, który powodował, że funkcja
CompilationMode.None()działała niespójnie i nie odzwierciedlała początkowej, najgorszej wydajności. To obejście zmiany platformy, która umożliwia częściową kompilację aplikacji przez stan kompilacji ARTverify(wpływa tylko na wczytywanie klas) krótko po pierwszym uruchomieniu. (Ie48d0) - Rozwiązano problem, w którym można było rejestrować (zwłaszcza krótkie) ślady, które nie raportowały pomiarów z wbudowanych danych Macrobenchmark Metrics, ponieważ nazwa procesu była obcinana w śladzie Perfetto. Makrobenchmark rozwiązuje ten problem, wyszukując skróconą nazwę pakietu we wszystkich wbudowanych zapytaniach, a nie tylko w oczekiwanej nazwie pakietu. Pamiętaj, że niestandardowe implementacje
TraceMetriclub inne bezpośrednie wywołaniaPerfettoSession.querymogą implementować to samo zachowanie, zmieniającprocess.name LIKE "$packageName"w zapytaniu Perfetto 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.
Publikacja androidx.benchmark:benchmark-*:1.4.0-alpha04 Wersja 1.4.0-alpha04 zawiera te zmiany.
Nowe funkcje
- (Eksperymentalne) Włącz generowanie profilu podstawowego i testowanie porównawcze w przypadku aplikacji zainstalowanych na koncie dodatkowego użytkownika, np. dowolnej aplikacji na urządzeniach z Androidem Auto bez ekranu. Ta funkcja została przetestowana w kilku scenariuszach, ale jeśli nie działa u Ciebie, zgłoś błąd. (I9fcbe, b/356684617, b/373641155)
Poprawki błędów
- Wartość
isProfileablejest teraz zawsze zastępowana w kompilacjach testu porównawczego, a wartośćisDebuggablejest zawsze zastępowana zarówno w kompilacjach testu porównawczego, jak inonMinified(przechwytywanie profilu podstawowego). (I487fa, b/369213505) - Poprawiono wykrywanie kompilacji na niektórych urządzeniach fizycznych przed API 28 – dotyczy to pliku JSON
context.compilationModeoraz działania funkcjiandroidx.benchmark.requireAot=true(która nie zgłasza już nieprawidłowo wyjątku) (Ic3e08, b/374362482) - W przypadku danych
CpuEventCounterzgłaszaj błąd, jeśli zostaną zaobserwowane nieprawidłowe pomiary (np. instrukcje/cykle procesora==0) (I8c503)
Wersja 1.4.0-alpha03
16 października 2024 r.
Publikacja androidx.benchmark:benchmark-*:1.4.0-alpha03 Wersja 1.4.0-alpha03 zawiera te zatwierdzenia.
Zmiany w interfejsie API
- Macrobenchmark: dodaje
ArtMetric, którego można używać do sprawdzania pokrycia profilu lub ogólnej wydajności środowiska wykonawczego Androida. Rejestruje liczbę i łączny czas trwania JIT, inicjowania klasy (jeśli jest dostępne) i weryfikacji klasy. Dodatkowo zmianyCaptureInfo, aby uwzględnić opcjonalną wersję Mainline ART z ustawieniem domyślnym. (I930f7) - Dodaj
coefficientOfVariationdo danych wyjściowych JSON testu porównawczego, aby pokazać stabilność w ramach danego testu. (Ib14ea)
Poprawki błędów
- Naprawiono
CollectBaselineProfileTask, gdy nazwa urządzenia AVD zawierała spacje. (Ia0225, b/371642809) - Próba naprawienia błędów spowodowanych przez wyjątki
StartupMode.COLD:Package <packagename> must not be running prior to cold start!. Teraz funkcjaMacrobenchmarkScope.killProcess()(w tym ta uruchamiana przed każdą iteracją, używana do implementowania działaniaStartupMode.COLD) będzie czekać na potwierdzenie, że wszystkie procesy aplikacji zostały zatrzymane. (I60aa6, b/351582215) - Rozwiązaliśmy problem, który powodował, że na niektórych emulatorach z dostępem do roota pojawiał się błąd UNLOCKED_. (Ic5117)
- Ta biblioteka używa teraz adnotacji JSpecify nullness, które są adnotacjami typu type-use. Aby wymusić prawidłowe użycie, deweloperzy Kotlin powinni używać tego argumentu kompilatora:
-Xjspecify-annotations=strict(jest to domyślne ustawienie od wersji 2.1.0 kompilatora Kotlin). (I7104f, b/326456246)
Wersja 1.4.0-alpha02
2 października 2024 r.
Publikacja androidx.benchmark:benchmark-*:1.4.0-alpha02 Wersja 1.4.0-alpha02 zawiera te zmiany.
Zmiany w interfejsie API
- Przeniesiono zadania Gradle
lockClocksiunlockClocksdo projektów testowych zamiast udostępniać je na najwyższym poziomie. Ta zmiana była konieczna, ponieważ nie ma możliwości zarejestrowania tych działań jako działań najwyższego poziomu bez naruszania izolacji projektu. (I02b8f, b/363325823)
Poprawki błędów
BaselineProfileRulezbiera teraz profile aplikacji wieloprocesowych, sygnalizując każdy uruchomiony proces na końcu bloku, aby zrzucać profile. Jeśli kompilacja oparta na profilu nigdy nie znajdzie procesu, do którego można wysłać dane, kompilacja się nie powiedzie, ponieważ nie oczekuje się, że będzie zawierać dane profilu. Dodaliśmy też argument instrumentacji do kontrolowania czasu oczekiwania na zrzut:androidx.benchmark.saveProfileWaitMillis(I0f519, b/366231469).- Od wersji Benchmark
1.3.2: rozwiązaliśmy problem, który uniemożliwiał Laboratorium Firebase (FTL) pobieranie plików wyników profilu podstawowego lub makrotestu porównawczego z wtyczki Gradle profilu podstawowego. (I2f678, b/285187547)
Aby używać FTL, zastosuj wtyczkę do modułu profilu Baseline w bloku wtyczki, używając:
plugins {
...
id("com.google.firebase.testlab")
}
a następnie skonfiguruj Laboratorium Firebase w ten sposób:
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 należy też dodać do rozszerzenia profilu podstawowego:
baselineProfile {
managedDevices += "ftlDeviceShiba34"
useConnectedDevices = false
}
Wersja 1.4.0-alpha01
18 września 2024 r.
Publikacja androidx.benchmark:benchmark-*:1.4.0-alpha01 Wersja 1.4.0-alpha01 zawiera te zatwierdzenia.
Nowa funkcja – statystyki dotyczące uruchamiania aplikacji
- Wstępną wersję statystyk uruchamiania aplikacji można włączyć w Macrobenchmark. (09fae38)
Aby włączyć tę funkcję w teście porównawczym uruchamiania:
@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 startupu przeanalizuje ślad w poszukiwaniu typowych problemów i wyświetli je po danych w danych wyjściowych 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 fazie rozwoju, a w przyszłości planujemy ulepszyć dokumentację i rozszerzalność. Chętnie poznamy Twoją opinię.
Nowe funkcje
- Dodano właściwość Gradle
androidx.baselineprofile.suppressWarnings, aby ukryć wszystkie ostrzeżenia dotyczące profilu Baseline. (314153a) - Dane mikropomiarów są teraz wyświetlane w śladach Perfetto jako liczniki. (3214854)
- Dodaj eksperymentalne skrypty do wyłączania JIT (wymaga uprawnień administratora / ponownego uruchomienia środowiska wykonawczego) i resetowania stanu wydajności/testu urządzenia. Obecnie nie są one publikowane jako zadania Gradle. (7c3732b)
- Dodano argument testu porównawczego, aby pomijać testy podczas uruchamiania w emulatorze. Gdy włączona jest opcja
automaticGenerationDuringbuild, testy porównawcze będą też wywoływać generowanie profilu podstawowego. Jeśli używane są emulatory, ta czynność się nie powiedzie. Dzięki nowemu argumentowiskipBenchmarksOnEmulatormożemy pominąć test. (0c2ddcd) - Zmiana logiki włączania zdarzeń związanych z wydajnością, aby działała w przypadku interfejsu API w wersji 23 lub nowszej (2550048)
Zmiany w interfejsie API
- Dotychczasowy argument eksperymentalny
PerfettoConfigdoMacrobenchmarkRule.measureRepeated()został przeniesiony do nowego obiektuExperimentalConfig.
Poprawki błędów
- Zwiększenie liczby ponownych prób w
lockClocks.sh(99e9dac) - Nie twórz rodzajów kompilacji
nonMinifiedi testu porównawczego, jeśli już istnieją. Z powodu błędu nawet jeśli istniały typy kompilacjinonMinifiedi testu porównawczego, zostaną one utworzone ponownie. (e75f0a5) - Ignoruj niezakończone wycinki z wyników
TraceSectionMetric. (a927d20) - Ulepszono sprawdzanie emulatora, aby uwzględniało prefiks
sdk_. (1587de8) - Traktuj nieuruchomione pakiety jako wyczyszczone w
FrameTimingGfxInfoMetric. (35cc79c) - Naprawiono błąd, który powodował, że
androidx.benchmark.cpuEventCountergenerował uszkodzone wartości w przypadku zdarzeń innych niż instrukcje. (06edd59) - Poprawka
resumeTiming/runWithTimingDisabled, aby uwzględniać kolejność priorytetów danych i znacznie ograniczyć wpływ wstrzymywania/wznawiania danych o niższym priorytecie na wyniki danych o wyższym priorytecie. Jeśli na przykład używasz liczników wydajności procesora za pomocą argumentu instrumentacjicpuEventCounter.enable, czas w nanosekundach nie jest już znacznie skracany w przypadku wstrzymania lub wznowienia. (5de0968)
Wersja 1.3
Wersja 1.3.4
26 marca 2025 r.
Publikacja androidx.benchmark:benchmark-*:1.3.4 Wersja 1.3.4 zawiera te zatwierdzenia.
Poprawki błędów
- Naprawiono niezgodności izolacji projektu Gradle we wtyczce Gradle Benchmark Baseline. (b/404523257)
Wersja 1.3.3
16 października 2024 r.
Publikacja androidx.benchmark:benchmark-*:1.3.3 Wersja 1.3.3 zawiera te zatwierdzenia.
Poprawki błędów
- Naprawiono błąd
CollectBaselineProfileTask, który występował, gdy nazwa urządzenia AVD zawierała spacje (Ia0225, b/371642809).
Wersja 1.3.2
2 października 2024 r.
Publikacja androidx.benchmark:benchmark-*:1.3.2 Wersja 1.3.2 zawiera te zmiany.
Poprawki błędów
- Naprawiono problem z Laboratorium testów Firebase (FTL), które nie mogło pobierać plików wyników profilu podstawowego ani biblioteki Macrobenchmark z wtyczki Gradle profilu podstawowego. (I2f678, b/285187547)
Aby użyć FTL, zastosuj wtyczkę do modułu profilu podstawowego w bloku wtyczek, używając:
plugins {
...
id("com.google.firebase.testlab")
}
a następnie skonfiguruj Laboratorium Firebase w ten sposób:
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 należy też dodać do rozszerzenia profilu podstawowego:
baselineProfile {
managedDevices += "ftlDeviceShiba34"
useConnectedDevices = false
}
Wersja 1.3.1
18 września 2024 r.
Publikacja androidx.benchmark:benchmark-*:1.3.1 Wersja 1.3.1 zawiera te zmiany.
Poprawki błędów
- Dodano właściwość Gradle
androidx.baselineprofile.suppressWarnings, aby wyciszyć wszystkie ostrzeżenia dotyczące profilu podstawowego (I7c36e, b/349646646). - Naprawiliśmy wtyczkę Gradle profilu Baseline, aby używała istniejących plików
nonMinified…ibenchmark…, jeśli zostały utworzone przez aplikację, zamiast tworzyć kod otaczający. (Ia8934, b/361370179) - Naprawiono
java.lang.AssertionError: ERRORS (not suppressed): EMULATOR, gdy na emulatorach włączona jest funkcjaautomaticGenerationDuringBuild. Nowy argument jest używany do pominięcia testu. (If3f51, b/355515798) - Mikrotesty – minimalizacja: zachowaj podklasy
org.junit.runner.notification.RunListenerw bibliotece testów porównawczych proguard (Ic8ed5, b/354264743) - Napraw
TraceSectionMetric, aby ignorować niekończące się wycinki. Wcześniej uznawano, że mają one czas trwania -1, np. podczas sumowania lub znajdowania minimalnego czasu trwania. (If74b7) - Rozwiązaliśmy problem w
FrameTimingGfxInfoMetric, który powodował, że uruchomienie rodzaju danych powodowało awarię, jeśli proces nie był jeszcze uruchomiony. (I6e412)
Wersja 1.3.0
21 sierpnia 2024 r.
Publikacja androidx.benchmark:benchmark-*:1.3.0 Wersja 1.3.0 zawiera te zatwierdzenia.
Zmiany w Microbenchmark od wersji 1.2.0
- Śledzenie metod jest domyślnie włączone w mikrotestach porównawczych na większości urządzeń.
- Śledzenie metod jest wykonywane jako osobna faza po pomiarach – dzięki temu dokładne pomiary i ślady metod mogą być generowane w ramach jednego uruchomienia testu porównawczego.
- Śledzenie metod w niektórych wersjach systemu operacyjnego Android i ART wpłynie na późniejsze etapy pomiaru – w tych wersjach śledzenie metod jest domyślnie wyłączone, a w danych wyjściowych Studio wyświetla się ostrzeżenie.
- Testy porównawcze wątku głównego i błędy ANR
- Dodaliśmy
measureRepeatedOnMainThreaddo testów porównawczych wątku UI (np. tych, które wchodzą w interakcję z interfejsami Compose/View), aby uniknąć błędów ANR podczas wielosekundowego działania. - Ślady metod są pomijane, jeśli oczekuje się, że przekroczą termin unikania błędów ANR. Ustaw wartość
androidx.benchmark.profiling.skipWhenDurationRisksAnrna false, aby wyłączyć to działanie (nie jest to zalecane w przypadku uruchamiania CI, ponieważ błędy ANR mogą powodować problemy podczas długotrwałych uruchamiań CI).
- Dodaliśmy
- Minifikacja
- Wbudowane reguły ProGuard, które ulepszają mikrotesty porównawcze z włączoną minifikacją.
- Minifikacja/R8 w module biblioteki wymaga wtyczki AGP 8.3 i można ją włączyć za pomocą
android.buildTypes.release.androidTest.enableMinificationwbuild.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 w większości wersji platformy wymaga uprawnień roota), dostępna przezInstrumentationArgumentandroidx.benchmark.cpuEventCounter.enable(można ustawić wartośćtrue) iandroidx.benchmark.cpuEventCounter.events, np. (Instructions,CpuCycles). Powinno to być obsługiwane na niektórych emulatorach userdebug, ale nie zostało przetestowane na wszystkich dostępnych emulatorach.
- Eksperymentalna funkcja licznika zdarzeń procesora (dane z
Zmiany w MACRObenchmark od wersji 1.2.0
- Ulepszone śledzenie metod w przypadku testów porównawczych.
- Teraz ślady metod są ograniczone do czasu trwania
measureBlocki mogą obejmować wiele sesji, jeśli proces rozpoczyna się wielokrotnie. - Wcześniej śledzenie metod działało tylko w przypadku testów porównawczych
StartupMode.COLDi nie rejestrowało niczego w przypadku testówmeasureBlocks, które nie powodowały ponownego uruchomienia procesu docelowego. - Naprawiliśmy opróżnianie śladów metod w makrobenchmarku, dzięki czemu ślady metod powinny być w pełni rejestrowane i prawidłowe nawet na wolniejszych urządzeniach. (I6349a, b/329904950)
- Teraz ślady metod są ograniczone do czasu trwania
- Prawidłowe zrzucanie profilu ART podczas poszczególnych iteracji
warmUp, gdy proces jest przerywany, dzięki czemu pomiaryCompilationMode.Partial(warmup=N)są dokładniejsze. (I17923) - Komunikat o niepowodzeniu transmisji Drop Shader
- Dodano sugestie dotyczące debugowania do komunikatu o błędzie dotyczącym odrzucenia transmisji shadera
- Dodaj 2 argumenty instrumentacji, aby zastąpić zachowanie polegające na pomijaniu cieniowania i obejść problem z awariami podczas testów porównawczych aplikacji bez
ProfileInstaller1.3:androidx.benchmark.dropShaders.enable=true/false: można go użyć, aby pominąć wszystkie operacje usuwania shaderów (w tym te wykonywane podczas uruchamianiaStartupMode.Cold), zwłaszcza w przypadku aplikacji testowych, które nie korzystają jeszcze z profileinstaller w wersji 1.3.androidx.benchmark.dropShaders.throwOnFailure=true/false: można używać do tolerowania błędów podczas próby usunięcia obiektów cieniujących, na przykład podczas testów porównawczych aplikacji bez pakietu profileinstaller 1.3 (I4f573).
- Dodano eksperymentalny wariant
MacrobenchmarkRule#measureRepeated, który przyjmuje niestandardowy parametrPerfettoConfig, aby w pełni dostosować nagrywanie śladu Perfetto. Pamiętaj, że nieprawidłowo skonfigurowane konfiguracje mogą spowodować błędy w wbudowanych klasach danych. (Idfd3d, b/309841164, b/304038384) - Anuluj zadania dexopt w tle przed uruchomieniem testu Macrobenchmark, aby ograniczyć zakłócenia. (I989ed)
- Macrobenchmark czeka teraz 1 sekundę, aż aplikacja docelowa opróżni profil ART (wcześniej czekał 500 ms). (I85a50, b/316082056)
- TraceSectionMetric overhaul
- Uwaga: zmiany w
TraceSectionMetricponiżej mogą mieć wpływ na dane wyjściowe w CI i mogą powodować przerwy lub błędy analizy. - Suma jest teraz wartością domyślną, ponieważ te dane są najczęściej używane w przypadku zdarzeń powtarzających się, a wartość „Pierwsze” powodowałaby w takich przypadkach odrzucanie danych.
- Zmieniono, aby zapewnić większe możliwości dostosowywania i więcej dostępnych trybów.
- Nazwy trybów są teraz umieszczane w nazwie danych wyjściowych (w Studio i pliku JSON).
- Teraz obsługuje wycinki utworzone za pomocą
Trace.{begin|end}AsyncSection.
- Uwaga: zmiany w
- Dane
- Zasilanie – dodano:
PowerMetric.deviceSupportsHighPrecisionTracking,PowerMetric.deviceBatteryHasMinimumCharge()iPowerMetric.deviceSupportsPowerEnergy() - Zmiana nazwy
Metric.getResultnagetMeasurements, aby pasowała do zwracanego typu - Dodano etykiety log.w / exception do wszystkich błędów wykrywania uruchamiania. Nie zmienia to obecnego działania (więc niektóre błędy są zgłaszane, a inne nie są wykrywane podczas uruchamiania), ale ułatwia zrozumienie. Zwykle są to te, które
Log.w()i nie zgłaszają danych o uruchamianiu. W takich przypadkach brakuje zdarzeń innych niż klatki, a po wykryciu uruchomienia zgłaszane są wyjątki, z wyjątkiem informacji o czasie renderowania klatki (z wycinków interfejsu/RT). (Id240f, b/329145809) - Dodano pomiar
frameCountdoFrameTimingMetric, aby ułatwić wykrywanie scenariuszy, w których pomiary zmieniają się, ponieważ zmieniła się liczba wygenerowanych klatek (dodano nowe animacje, rozwiązano problemy z unieważnieniem). (I1e5aa) - Wyjaśniliśmy, że
frameOverrunMsto preferowane dane do śledzenia, gdy są dostępne w dokumentach, i dlaczego tak jest. (I18749, b/329478323) - Rozwiązuje problem, który powodował, że nieukończone klatki na początku i na końcu śladu mogły być ze sobą łączone, co powodowało nieprawidłowe raportowanie jako pojedynczej, bardzo długiej klatki. (I39353, b/322232828)
- Ulepszono błąd
FrameTimingMetric, gdy klatki nie są generowane, i zawsze wyświetlany jest link do śledzenia, gdy nie uda się przeanalizować danych, aby ułatwić diagnozowanie problemu. (I956b9) - Naprawiliśmy awarię w
FrameTimingMetric, która występowała podczas analizowania identyfikatora ramki, zwłaszcza na niektórych urządzeniach OEM. (Ia24bc, b/303823815, b/306235276) - Zmniejszono rygorystyczność kontroli w
FrameMetricsi dodano więcej szczegółów do komunikatów o błędach. (Iadede)
- Zasilanie – dodano:
Zmiany w przechwytywaniu profili podstawowych i wtyczce Gradle od wersji 1.2.0
- Zwiększyliśmy maksymalną zalecaną wersję AGP do 9.0.0-alpha01.
- Upewnij się, że zadania
mergeArtProfileimergeStartupProfilezawsze czekają na wygenerowanie profilu podstawowego. (I623d6, b/343086054) - Po pomyślnym wygenerowaniu profilu podstawowego zostanie wyświetlone podsumowanie zmian (I824c8, b/269484510).
- Dodano DSL, aby wyłączyć ostrzeżenia (Ic4deb, b/331237001)
- Poprawka zapewniająca, że testy porównawcze będą używać wygenerowanych profili podstawowych, gdy opcja
automaticGenerationDuringBuildjest wyłączona (Ic144f, b/333024280) - Napraw zastąpienia właściwości wtyczki Gradle
BaselineProfile, aby umożliwić generowanie profilu Baseline i testy porównawcze podczas dostosowywania rodzaju kompilacjinonMinifiedlub testu porównawczego. (Ib8f05, b/324837887) - Poprawka dotycząca uwzględniania profili podstawowych biblioteki w pliku AAR przed AGP 8.3.0-alpha15. (I1d2af, b/313992099)
- Naprawiono błąd, który powodował, że na końcu zadania generowania pojawiał się adres URL wyjściowego profilu podstawowego i startowego. (I802e5, b/313976958)
Inne istotne zmiany od wersji 1.2.0
- Przechwytywanie logów
- Zmniejszenie liczby błędów EXITCODE 2 podczas uruchamiania narzędzia Perfetto z błędu do ostrzeżenia w dzienniku
- Domyślne włączanie śledzenia AIDL w testach porównawczych(wymaga interfejsu API na poziomie 28) (Ia0af2, b/341852305)
- Domyślnie włącz śledzenie tagów porter w testach porównawczych. Obejmuje to na przykład punkty śledzenia blokady uśpienia. (Icfe44, b/286551983)
- Wydłużono limit czasu rozpoczęcia przechwytywania śladu, aby uniknąć awarii podczas rozpoczynania śledzenia na wolniejszych urządzeniach (I98841, b/329145808).
- Dodano publiczne interfejsy API
PerfettoTraceProcessor.Session.queryMetricsz wariantami JSON, textproto i proto binary (niezdekodowanymi). Umożliwiają one wysyłanie zapytań dotyczących wskaźników wbudowanych wTraceProcessor(I54d7f, b/304038382). - Włącz blokowanie rozpoczęcia nagrywania rekordu śledzenia Perfetto, aby zmniejszyć ryzyko utraty danych na początku śledzenia. Obsługiwane tylko w przypadku interfejsu API na poziomie 33 lub wyższym. (Ie6e41, b/310760059)
- Dane wyjściowe JSON
- Dodaliśmy dodatkowe informacje w kontekście testu porównawczego w danych wyjściowych JSON:
context.artMainlineVersion– wersja modułu głównego ART (jeśli jest obecny na urządzeniu, w przeciwnym razie-1);context.build.id– odpowiada android.os.Build.IDcontext.build.version.codename– odpowiada android.os.Build.VERSION.CODENAMEcontext.build.version.abbreviatedCodename– odpowiada pierwszej literze nazwy kodowej wersji przedpremierowej (w tym w przypadku wersji produkcyjnych) (Ie5020).
- Dodano listę
profilerOutputdo danych wyjściowych JSON, aby ułatwić korzystanie z narzędzi do śledzenia profili (np.Perfetto, śledzenie metod) (I05ddd, b/332604449). - Dodano ostrzeżenie, gdy w modułach testów porównawczych używany jest Android Test Orchestrator, ponieważ spowoduje to wielokrotne zastępowanie plików JSON z danymi wyjściowymi poszczególnych modułów. (Ia1af6, b/286899049)
- Throw when filenames are longer than 200 chars to avoid unclear crashes when writing or post-processing files. (I4a5ab)
- Dodaliśmy dodatkowe informacje w kontekście testu porównawczego w danych wyjściowych JSON:
Wersja 1.3.0-rc01
7 sierpnia 2024 r.
Publikacja androidx.benchmark:benchmark-*:1.3.0-rc01 Wersja 1.3.0-rc01 zawiera te zatwierdzenia.
Poprawki błędów
- Naprawiono błąd, który powodował, że funkcja
androidx.benchmark.cpuEventCountergenerowała uszkodzone wartości w przypadku zdarzeń innych niż instrukcje (I7386a, b/286306579). - Naprawiono błąd
resumeTiming/runWithTimingDisabled, aby zachować kolejność priorytetów danych i znacznie zmniejszyć wpływ wstrzymania/wznowienia danych o niższym priorytecie na wyniki danych o wyższym priorytecie. Jeśli na przykład używasz liczników wydajności procesora za pomocą argumentu instrumentacjicpuEventCounter.enable, wartość timeNs nie jest już znacznie zmniejszana, gdy następuje wstrzymanie lub wznowienie. (I39c2e, b/286306579, b/307445225) - Zmniejszyliśmy prawdopodobieństwo, że próbkowanie stosu spowoduje błąd
measureRepeatedOnMainThreadz powodu przekroczenia limitu czasu wątku głównego, przenosząc konwersję próbkowania stosu poza wątek główny. (I487a8, b/342237318) - Usunęliśmy 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 nowszą (np. R8 w wersji 3.3) oraz w przypadku wszystkich kompilacji podczas korzystania z AGP 8.1 lub nowszej (np. D8 w wersji 8.1). Klientom, którzy nie używają AGP, zalecamy przejście na D8 w wersji 8.1 lub nowszej. Więcej szczegółów znajdziesz w tym artykule. (I9496c, b/345472586)
- Dodaliśmy sprawdzanie wersji AGP, aby wysyłać nazwę pakietu jako argument instrukcji. W wersjach wtyczki Androida do obsługi Gradle starszych niż 8.4.0 nie można wysłać nazwy pakietu aplikacji docelowej do aplikacji do instrumentacji za pomocą argumentów instrumentacji. (0c72a3f)
Wersja 1.3.0-beta02
10 lipca 2024 r.
Publikacja androidx.benchmark:benchmark-*:1.3.0-beta02 Wersja 1.3.0-beta02 zawiera te zmiany.
Poprawki błędów
- Prawidłowo obsługuj EXITCODE
2podczas uruchamiania Perfetto, aby rejestrować ostrzeżenie, ale kontynuować.
Wersja 1.3.0-beta01
12 czerwca 2024 r.
Publikacja androidx.benchmark:benchmark-*:1.3.0-beta01 Wersja 1.3.0-beta01 zawiera te zatwierdzenia.
Zmiany w interfejsie API
- Zmieniliśmy nazwę
MethodTracing.affectsMeasurementOnThisDevicenaAFFECTS_MEASUREMENT_ON_THIS_DEVICE, aby zachować spójność. (I1bdfa) - Dodano eksperymentalny interfejs API
BlackHole.consume(), aby zapobiec usuwaniu martwego kodu w mikrotestach. (If6812, b/286091643) - Mikrotest porównawczy będzie teraz prawidłowo zgłaszać błąd, aby zapobiec zakłócaniu pomiarów przez śledzenie metod. Dzieje się tak na niektórych urządzeniach, gdy śledzenie metod jest wymuszone (za pomocą argumentów instrumentacji lub
MicrobenchmarkConfig) i gdy próba pomiaru jest wykonywana po śledzeniu metody. Problem dotyczy urządzeń z interfejsem API w wersji 26–30 lub niektórych wersji modułu głównego ART, na które ma wpływ ta interferencja. Można to wykryć w czasie działania za pomocąProfilerConfig.MethodTracing.affectsMeasurementOnThisDevice. (Iafb92, b/303660864)
Poprawki błędów
- Zwiększono zalecaną maksymalną wersję AGP do 9.0.0-alpha01. (I5bbb0)
- Dodano tryb kompilacji do kontekstu testu porównawczego (If5612, b/325512900).
- Domyślne włączanie śledzenia AIDL (wymaga interfejsu API w wersji 28) (Ia0af2, b/341852305)
- Dodaliśmy dodatkowe informacje w kontekście testu porównawczego w danych wyjściowych JSON:
context.artMainlineVersion– wersja modułu głównego Art w formacie liczby całkowitej (jeśli jest 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.CODENAMEcontext.build.version.abbreviatedCodename– odpowiada pierwszej literze nazwy kodowej wersji przedpremierowej (nawet w przypadku wersji produkcyjnych) (Ie5020)
- Poprawiono
StackSampling, aby uwzględniaćandroidx.benchmark.profiling.sampleDurationSeconds(Ib1d53) - Zmień zależność makro –> wspólna na
api(), aby łatwiej było używać np.PerfettoTraceiPerfettoConfig. (Icdae3, b/341851833) - Upewnij się, że zadania
mergeArtProfileimergeStartupProfilezawsze czekają na wygenerowanie profilu podstawowego. (I623d6, b/343086054) - Przy podejmowaniu decyzji o włączeniu wariantu weź pod uwagę jego stan. (I5d19e, b/343249144)
- Zwiększono domyślny limit czasu rozpoczęcia procesora śladów Perfetto. (I87e8c, b/329145808)
Wersja 1.3.0-alpha05
14 maja 2024 r.
Publikacja androidx.benchmark:benchmark-*:1.3.0-alpha05 Wersja 1.3.0-alpha05 zawiera te zmiany.
Poprawki błędów
- Zgłaszanie bardziej zrozumiałego wyjątku, gdy dane makrotestu porównawczego zwracają wartości zerowe we wszystkich iteracjach (Iab58f, b/314931695).
- Do reguł ProGuard mikrotestu porównawczego dodano dodatkowe reguły obejścia, w tym obsługę reguł detektora i inne zaobserwowane ostrzeżenia i błędy. (I14d8f, b/329126308, b/339085669)
- Śledzenie metod jest uruchamiane jako osobna faza podczas testu makro i nie wpływa już na pomiary. (If9a50, b/285912360, b/336588271)
- Dodaliśmy dodatkowe sugestie dotyczące debugowania do komunikatu o błędzie transmisji modułu cieniującego. (I5efa6, b/325502725)
Wersja 1.3.0-alpha04
1 maja 2024 r.
Publikacja androidx.benchmark:benchmark-*:1.3.0-alpha04 Wersja 1.3.0-alpha04 zawiera te zmiany.
Zmiany w interfejsie API
- Dodano eksperymentalny wariant
MacrobenchmarkRule#measureRepeated, który przyjmuje niestandardowy parametrPerfettoConfig, aby w pełni dostosować nagrywanie śladu Perfetto. Pamiętaj, że nieprawidłowo skonfigurowane konfiguracje mogą powodować błędy wbudowanych klas wskaźników. (Idfd3d, b/309841164, b/304038384) - Zmiana nazwy
PowerMetric.deviceSupportsPowerEnergynaPowerMetric.deviceSupportsHighPrecisionTrackingw celu uniknięcia wątpliwości (I5b82f) - Dodaliśmy zasady
PowerMetric.deviceBatteryHasMinimumCharge()iPowerMetric.deviceSupportsPowerEnergy(), aby umożliwić zmianę lub pomijanie testów porównawczych na podstawie możliwości pomiaru mocy urządzenia. (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)
- Zmieniono wyjątek na log informacyjny, gdy warianty testu porównawczego są wyłączone (I8a517, b/332772491).
- Uproszczenie rejestrowania śladów metod w przypadku testu makroetykietowego, który jest ograniczony do czasu trwania rzeczywistego testu
measureBlock(). Wcześniej uruchamiał się on przy uruchamianiu procesu docelowego i obsługiwał tylko uruchomienia „na zimno” (Iee85a, b/300651094). - Unikanie awarii, gdy procesor śledzenia Perfetto wolno się uruchamia (I98841, b/329145808)
Wersja 1.3.0-alpha03
17 kwietnia 2024 r.
Publikacja androidx.benchmark:benchmark-*:1.3.0-alpha03 Wersja 1.3.0-alpha03 zawiera te zmiany.
Nowe funkcje
- Dodaje publiczny interfejs API
PerfettoTraceProcessor.Session.queryMetricsz wariantami JSON, textproto i proto binary (niezdekodowanymi). Umożliwiają one wysyłanie zapytań dotyczących wskaźników wbudowanych w TraceProcessor (I54d7f, b/304038382). - Dodano
profilerOutputdo danych wyjściowych JSON, aby ułatwić korzystanie z narzędzi do śladów profilowania (np. Perfetto, ślady metod). (I05ddd, b/332604449) - Dodano tag zasilania do konfiguracji Perfetto testu porównawczego. Obejmuje to na przykład punkty śledzenia blokady wybudzania. (Icfe44, b/286551983)
- Dodano argument inst
androidx.benchmark.profiling.skipWhenDurationRisksAnr, który można ustawić na wartość „false”, aby uniknąć pomijania śladów metod, gdy oczekiwany czas trwania może spowodować błąd ANR. Zdecydowanie zalecamy unikanie tego w przypadku uruchamiania testów CI. - Dodano eksperymentalny argument inst
androidx.benchmark.profiling.perfCompare.enable. Ustaw go na wartość true, aby uruchomić porównanie czasu między fazami pomiaru i profilowania. Przydatne np. do oceny narzutu śledzenia metod. (I61fb4, b/329146942)
Zmiany w interfejsie API
- Zmieniono
TraceSectionMetric.Modena klasę zapieczętowaną, aby umożliwić przyszłe rozszerzanie bez naruszania wyczerpujących instrukcji when (I71f7b) - Dodano
TraceSectionMetric.Mode.Averagei.Countoraz zmieniono kolejność argumentów, tak aby częściej używany argument (tryb) znajdował się wcześniej na liście argumentów, co zmniejsza potrzebę określania nazw parametrów. (Ibf0b0, b/315830077, b/322167531) - Zmiana nazwy
Metric.getResultnagetMeasurements, aby pasowała do zwracanego typu (I42595)
Poprawki błędów
- Rozwiązanie zapewniające, że testy porównawcze korzystają z wygenerowanych profili podstawowych, gdy opcja
automaticGenerationDuringBuildjest wyłączona (Ic144f, b/333024280) - Naprawiono zastępowanie właściwości wtyczki Gradle
BaselineProfile, aby umożliwić generowanie profilu Baseline i testy porównawcze podczas dostosowywania typu kompilacjinonMinifiedlub testu porównawczego. (Ib8f05, b/324837887) - Naprawiono opróżnianie śladów metod w makrobenchmarku, dzięki czemu ślady metod powinny być w pełni rejestrowane i prawidłowe nawet na wolniejszych urządzeniach. (I6349a, b/329904950)
- Włącz blokowanie rozpoczęcia w rekordzie śledzenia Perfetto, aby zmniejszyć ryzyko utraty danych na początku śledzenia. Obsługiwane tylko w przypadku interfejsu API na poziomie 33 lub wyższym. (Ie6e41, b/310760059)
- Dodano ostrzeżenie, gdy Android Test Orchestrator jest używany w modułach testu porównawczego, ponieważ spowoduje to wielokrotne zastępowanie plików JSON wyjściowych dla poszczególnych modułów. (Ia1af6, b/286899049)
- Wymuszanie separatora tysięcy „,” (przecinek) w celu zachowania spójności w danych wyjściowych Studio, ignorując ustawienia regionalne urządzenia (I3e921, b/313496656)
TraceSectionMetricobsługuje teraz wycinki utworzone za pomocąTrace.{begin|end}AsyncSection. (I91b32, b/300434906)- Dodano etykiety log.w / wyjątku do wszystkich błędów wykrywania uruchamiania. Nie zmienia to obecnego działania (więc niektóre błędy są zgłaszane, a inne nie wykrywają uruchomienia), ale sprawia, że jest ono bardziej zrozumiałe. Zazwyczaj te, które
Log.w()i nie zgłaszają danych o uruchomieniu, to te, w których brakuje zdarzeń niezwiązanych z klatkami, a wyjątki są zgłaszane, gdy wykryte zostanie uruchomienie, z wyjątkiem informacji o czasie renderowania klatki (z wycinków UI/RT). (Id240f, b/329145809) - Anuluj zadania dexopt w tle przed uruchomieniem testu Macrobenchmark, aby ograniczyć zakłócenia. (I989ed)
- Dodano pomiar
frameCountdoFrameTimingMetric, aby ułatwić wykrywanie scenariuszy, w których pomiary zmieniają się, ponieważ zmieniła się liczba wygenerowanych klatek (dodano nowe animacje, rozwiązano problemy z unieważnieniem). (I1e5aa) - Wyjaśniliśmy, że
frameOverrunMsto preferowane dane do śledzenia, gdy są dostępne w dokumentach, i dlaczego tak jest. (I18749, b/329478323)
Wersja 1.3.0-alpha02
20 marca 2024 r.
Publikacja androidx.benchmark:benchmark-*:1.3.0-alpha02 Wersja 1.3.0-alpha02 zawiera te zmiany.
Nowe funkcje
Eksperymentalna obsługa R8 w mikrotestach za pomocą wbudowanych reguł ProGuard. Pamiętaj, że ta funkcja jest eksperymentalna i wymaga AGP 8.3 do minimalizacji testów modułu biblioteki. Aby włączyć w module testu porównawczego
build.gradleoptymalizację/minimalizację R8, która w zależności od obciążenia powinna znacznie zwiększyć wydajność, użyj tych ustawień: (I738a3, b/184378053)android { buildTypes.release.androidTest.enableMinification = true }
Poprawki błędów
- Poprawia ostrzeżenie dotyczące śledzenia metod, aby znajdowało się w osobnym wierszu od danych wyjściowych mikropomiarów. (I0455c, b/328308833)
Wersja 1.3.0-alpha01
21 lutego 2024 r.
Publikacja androidx.benchmark:benchmark-*:1.3.0-alpha01 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, które dotyczą interfejsów View lub Compose) nie wywoływały błędów ANR, zwłaszcza w przypadku dużych zestawów w CI. (I5c86d) - Dodano
FrameTimingGfxInfoMetric, eksperymentalną alternatywną implementacjęFrameTimingMetric, w której pomiary pochodzą bezpośrednio z platformy, a nie są wyodrębniane ze śladu 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 jako etykietę wskaźnika
- Dodano nazwę trybu do danych wyjściowych, aby wyjaśnić znaczenie danych.
- Zmieniono domyślne ustawienie na sumę, ponieważ te dane są najczęściej używane w przypadku wydarzeń cyklicznych. Pamiętaj o tych zmianach w korzystaniu z CI, ponieważ mogą one powodować przerwy lub błędy analizy. (Ic1e82, b/301892382, b/301955938)
- Dodaj
Poprawki błędów
- Ulepszyliśmy komunikat o błędzie w przypadku wtyczki Gradle profilu podstawowego, gdy określone urządzenie zarządzane nie istnieje (Idea2b, b/313803289).
- Poprawka dotycząca uwzględniania profili bazowych biblioteki w pliku AAR przed AGP 8.3.0-alpha15 (I1d2af, b/313992099)
- Stały adres URL danych wyjściowych profilu podstawowego i profilu uruchamiania na końcu zadania generowania (I802e5, b/313976958)
- Dostosowano limity czasu źródła danych, aby spróbować rozwiązać problem
java.lang.IllegalStateException: Failed to stop [ProcessPid(processName=perfetto, pid=...)](I8dc7d, b/323601788) - Dodaj 2 argumenty instrumentacji, aby zastąpić zachowanie związane z usuwaniem cieniowania i obejść awarie podczas testowania aplikacji bez
ProfileInstaller1.3:androidx.benchmark.dropShaders.enable=true/false: można użyć do pominięcia wszystkich operacji odrzucania obiektów cieniujących (w tym tych wykonywanych podczas uruchamianiaStartupMode.Cold), zwłaszcza podczas testów porównawczych aplikacji, które nie korzystają jeszcze z biblioteki profileinstaller 1.3.androidx.benchmark.dropShaders.throwOnFailure=true/false: można używać do tolerowania błędów podczas próby usunięcia obiektów cieniujących, np. podczas testów porównawczych aplikacji bez pakietu profileinstaller 1.3 (I4f573).
- Pomijanie śledzenia metod w wątku UI, gdy ma ono trwać dłużej niż kilka sekund, oraz czyszczenie śladów metod podczas zgłaszania wyjątku. (I6e768)
- Zgłaszaj błąd, gdy nazwy plików są dłuższe niż 200 znaków, aby uniknąć niejasnych awarii podczas zapisywania lub przetwarzania plików. (I4a5ab)
- Rozwiązuje problem, który powodował, że nieukończone klatki na początku i na końcu śladu mogły być ze sobą łączone, co powodowało nieprawidłowe raportowanie jako pojedynczej, bardzo długiej klatki. (I39353, b/322232828)
- Używaj
--skip verificationw interfejsie API na poziomie 30 lub wyższym podczas ponownej instalacji pakietu w interfejsie API na poziomie 30–33, aby wyczyścić profile ART w kompilacjach użytkownika. Pomaga to ominąć ostrzeżenia Play Protect, które powodują błędy na niektórych urządzeniach. (Ic9e36) - Używaj
am force-stopdo zamykania aplikacji, które nie są aplikacjami systemowymi, takimi jak interfejs systemu czy Menu z aplikacjami. (I5e028) - Test porównawczy Macrobenchmark czeka teraz na
1 second, aż aplikacja docelowa wyczyści profil ART (wcześniej czekał na500 ms). (I85a50, b/316082056) - Ulepszanie błędu
FrameTimingMetric, gdy nie są generowane klatki, i zawsze wyświetlanie linku do śledzenia w przypadku niepowodzenia analizowania wskaźnika, aby ułatwić diagnozowanie problemu. (I956b9) - Naprawiliśmy błąd powodujący awarię w
FrameTimingMetric, gdy nie udało się przeanalizować identyfikatora klatki, zwłaszcza na niektórych urządzeniach OEM. (Ia24bc, b/303823815, b/306235276) - Złagodziliśmy rygorystyczność sprawdzania w
FrameMetricsi dodaliśmy więcej szczegółów do komunikatów o błędach. (Iadede)
Wersja 1.2
Wersja 1.2.4
17 kwietnia 2024 r.
Publikacja androidx.benchmark:benchmark-*:1.2.4 Wersja 1.2.4 zawiera te zatwierdzenia.
Poprawki błędów
- Naprawiono błąd, który powodował, że w wariantach testu porównawczego nie był konfigurowany zestaw źródeł profilu podstawowego. Naprawia też błąd
automaticGenerationDuringBuildw bibliotekach, który powoduje zależność zapętloną. (I28ab7, b/333024280) - Używaj
am force-stop, aby zamykać aplikacje, które nie są aplikacjami systemowymi, takimi jak interfejs systemu czy Menu z aplikacjami. Rozwiązuje to problem z awarią testów porównawczychStartupMode.COLDz powodu błędu „Package $package must not be running prior to cold start!” (Pakiet $package nie może być uruchomiony przed uruchomieniem na zimno), który występuje, gdy proces nie został całkowicie zatrzymany. (I5e028)
Wersja 1.2.3
24 stycznia 2024 r.
Publikacja androidx.benchmark:benchmark-*:1.2.3 Wersja 1.2.3 zawiera te zatwierdzenia.
Poprawki błędów
- Usunięto wyjątek z wtyczki Baseline Profile do obsługi Gradle, gdy wersja AGP to 8.3.0 lub nowsza.
- Poprawka dotycząca uwzględniania profili podstawowych biblioteki w AAR przed AGP 8.3.0-alpha15.
Wersja 1.2.2
1 grudnia 2023 r.
Publikacja androidx.benchmark:benchmark-*:1.2.2 Wersja 1.2.2 zawiera te zatwierdzenia.
Profile podstawowe
- W logach wykonania ścieżka pliku wyjściowego profilu podstawowego będzie wyświetlana jako lokalny identyfikator URI pliku (aosp/2843918, aosp/2853665, b/313976958).
Wersja 1.2.1
15 listopada 2023 r.
Publikacja androidx.benchmark:benchmark-*:1.2.1 Wersja 1.2.1 zawiera te zatwierdzenia.
Nowe funkcje
- Ulepszony komunikat o błędzie, gdy użytkownik wyłącza warianty testowe (b/307478189)
- Dodano właściwości obsługujące integrację z testem AS (b/309805233), (b/309116324)
Wersja 1.2.0
18 października 2023 r.
Publikacja androidx.benchmark:benchmark-*:1.2.0 Wersja 1.2.0 zawiera te zatwierdzenia.
Ważne zmiany od wersji 1.1.0
Profile podstawowe
- Nowa wtyczka Gradle Baseline Profile automatyzuje przechwytywanie i uwzględnianie profili podstawowych w procesie testowania i kompilacji.
BaselineProfileRule.collectjest teraz stabilny i stanowi uproszczoną wersję poprzedniego eksperymentalnego interfejsu APIBaselineProfileRule.collectBaselineProfile- Wystarczy, że podasz
packageName, i możesz zacząć korzystać z aplikacji
- Wystarczy, że podasz
- W przypadku bibliotek generujących profile podstawowe możesz teraz filtrować wygenerowane reguły w kodzie (argument
BaselineProfileRule.collect) lub jeszcze prościej – w pluginie Gradle. - Poprawki
- Naprawiono zbieranie profili podstawowych na Androidzie U+ (Id1392, b/277645214)
Macrobenchmark
- Kompilacja
- Macrobenchmark teraz prawidłowo resetuje stan kompilacji dla każdej kompilacji. Wymaga to ponownej instalacji pliku APK przed Androidem 14, dlatego zdecydowanie zalecamy testy porównawcze na Androidzie 14 lub nowszym, jeśli chcesz zachować stan (np. logowanie użytkownika) w mierzonych danych.
- Możesz też obejść ten problem, kontrolując kompilację aplikacji oddzielnie i pomijając kompilację za pomocą
CompilationMode.Ignore()lub argumentu instrumentacji.
Argumenty instrumentacji
- Obsługa argumentu instrumentacji
androidx.benchmark.dryRunMode.enable(dostępnego już w mikrobenchmarku) w celu szybszego przeprowadzania testów weryfikacyjnych (np.podczas tworzenia testu porównawczego lub przed przesłaniem). - Obsługa
androidx.benchmark.profiling.mode=StackSamplingiMethodTracing. - Dodano
androidx.benchmark.enabledRules, aby umożliwić filtrowanie w czasie działania testów reguł profilu podstawowego i testów reguł makrobenchmarku. - Dodano argument
androidx.benchmark.perfettoSdkTracing.enable, aby włączyć śledzenie za pomocą narzędzia tracing-perfetto, np. śledzenie ponownego komponowania. Pamiętaj, że w przypadku używania zStartupMode.COLDczas będzie znacznie dłuższy, ponieważ biblioteka śledzenia jest wczytywana i włączana podczas uruchamiania aplikacji.
- Obsługa argumentu instrumentacji
Wymagania
- Aby umożliwić przechwytywanie i resetowanie profilu oraz czyszczenie pamięci podręcznej obiektów cieniujących, Macrobenchmark wymaga teraz w aplikacji docelowej biblioteki
ProfileInstallerw wersji 1.3.0 lub nowszej.
- Aby umożliwić przechwytywanie i resetowanie profilu oraz czyszczenie pamięci podręcznej obiektów cieniujących, Macrobenchmark wymaga teraz w aplikacji docelowej biblioteki
Nowe eksperymentalne interfejsy API danych
- Dodaliśmy eksperymentalną funkcję
TraceSectionMetric, która umożliwia wyodrębnianie prostych danych o czasie z blokówtrace("") {}w aplikacji, lub TraceMetric, która pozwala wykorzystać pełne możliwości zapytań PerfettoTraceProcessor. - Dodano eksperymentalną funkcję
PowerMetricdo rejestrowania informacji o zużyciu energii. - Dodano eksperymentalną funkcję
MemoryCountersMetricdo 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 Perfetto).
- Dodaliśmy eksperymentalną funkcję
Poprawki
- Naprawiliśmy błędy powodujące awarie podczas instalowania lub wyodrębniania profili z aplikacji zainstalowanej z wielu plików APK (np. z pakietu aplikacji).
- Naprawiono
FrameTimingMetricignorowanie klatek z niespójnymi identyfikatorami klatek (zwykle klatek podczas falowania na API 31+) (I747d2, b/279088460). - Naprawiliśmy błędy analizy śladów > 64 MB (Ief831, b/269949822).
- Wyjaśniliśmy błędy, które występują, gdy obraz systemu operacyjnego urządzenia (zwłaszcza emulatora) nie jest prawidłowo skonfigurowany do śledzenia lub kompilacji.
- Pomiń sprawdzanie poziomu baterii w przypadku urządzeń bez baterii (mikro i makro)
- Ulepszone dane wyjściowe plików, z bardziej przejrzystymi błędami w przypadku nieprawidłowych katalogów wyjściowych i bezpieczniejszymi ustawieniami domyślnymi.
- Zwiększona stabilność
StartupMode.COLDdzięki konsekwentnemu usuwaniu pamięci podręcznej cieniowania (dostępnej też przezMacrobenchmarkScope.dropShaderCache) - Naprawiono wycofanie trybu leanback w przypadku
startActivityAndWait.
Mikrotest
- Funkcje
- Profilowanie zostało przeniesione do osobnej fazy, po innych danych, dzięki czemu jedno uruchomienie testu może wyświetlać zarówno dokładny czas, jak i wyniki profilowania.
- Eksperymentalne interfejsy API
- Dodano eksperymentalny interfejs API
MicrobenchmarkConfigdo definiowania niestandardowych danych i konfigurowania śledzenia oraz profilowania. Może służyć do rejestrowania śladów metod lub punktów śledzenia (pamiętaj jednak o obciążeniu związanym ze śledzeniem). - Dodano eksperymentalne interfejsy API do sterowania
BenchmarkStateoddzielnie odBenchmarkRulebez JUnit. - Dodaliśmy eksperymentalny rekord
PerfettoTrace, aby umożliwić przechwytywanie śladów Perfetto z niestandardową konfiguracją, niezależnie od interfejsów API testu porównawczego.
- Dodano eksperymentalny interfejs API
- Poprawki
- Obejście problemu z brakiem początkowych białych znaków w danych wyjściowych testu porównawczego Androida Studio.
- Rozwiązaliśmy problem, który powodował, że ostrzeżenia mogły nie być drukowane w wynikach testów porównawczych Android Studio.
- Naprawiono
SampledProfilingawarię na Androidzie 13 (API 33) i nowszych wersjach. - Znacznie poprawiono wydajność
dryRunModeprzez pominięcieIsolationActivityi śledzenia Perfetto (tryb próbny działa nawet 10 razy szybciej na starszych wersjach systemu operacyjnego).
Wersja 1.2.0-rc02
6 października 2023 r.
Publikacja androidx.benchmark:benchmark-*:1.2.0-rc02 Wersja 1.2.0-rc02 zawiera te zatwierdzenia.
Poprawki błędów
- Poprawiono działanie pliku wyjściowego Benchmark, aby nie przerywał już kopiowania pliku wtyczki
BaselineProfile. Pliki zostały wygenerowane i skopiowane z urządzenia, ale zmieniono ich nazwy, przez co wtyczka Gradle ich nie widziała. (I8dbcc, b/303034735, b/296453339) - Wyjaśniono komunikaty o błędach wczytywania
tracing-perfettopodczas wstrzykiwania z modułu testów porównawczych do aplikacji docelowej.
Wersja 1.2.0-rc01
20 września 2023 r.
Publikacja androidx.benchmark:benchmark-*:1.2.0-rc01 Wersja 1.2.0-rc01 zawiera te zatwierdzenia.
Poprawki błędów
- Gdy w teście porównawczym nie uda się zainicjować śledzenia za pomocą pakietu SDK Perfetto, zgłaszany jest wyjątek (z instrukcjami dotyczącymi rozwiązania problemu). (I6c878, b/286228781)
- Naprawiono błąd OOM podczas konwertowania śladu metody ART na format perfetto. (I106bd, b/296905344)
- (Macrobenchmark) Poprawiliśmy etykietę śledzenia metod, gdy jest ona połączona z danymi wyjściowymi testu w Studio, i poprawiliśmy nazwy plików śledzenia metod, aby były unikalne na urządzeniu/hoście, dzięki czemu nie zostaną zastąpione, gdy zostanie uruchomionych więcej testów porównawczych. (I08e65, b/285912360)
- Zapewnia, że urządzenie jest wybudzone podczas rejestrowania profilu podstawowego. (I503fc)
Wersja 1.2.0-beta05
30 sierpnia 2023 r.
Publikacja androidx.benchmark:benchmark-*:1.2.0-beta05 Wersja 1.2.0-beta05 zawiera te zatwierdzenia.
Nowe funkcje
- Wtyczka Baseline Profile do obsługi Gradle obsługuje teraz wtyczkę Androida do obsługi Gradle w wersji 8.3. (aosp/2715214)
Wersja 1.2.0-beta04
23 sierpnia 2023 r.
Publikacja androidx.benchmark:benchmark-*:1.2.0-beta04 Wersja 1.2.0-beta04 zawiera te zatwierdzenia.
Nowe funkcje
- Wtyczka Gradle do obsługi profili podstawowych obsługuje teraz wtyczkę Androida do obsługi Gradle w wersji 8.3. (aosp/2715214)
Poprawki błędów
- Naprawiono błędy zapisu, przenoszenia i pobierania plików (zwłaszcza tych z testów parametryzowanych) przez dalsze oczyszczanie nazw plików wyjściowych i unikanie znaków „=” i „:” w nazwach plików wyjściowych. (I759d8)
Wersja 1.2.0-beta03
9 sierpnia 2023 r.
Publikacja androidx.benchmark:benchmark-*:1.2.0-beta03 Wersja 1.2.0-beta03 zawiera te zatwierdzenia.
Zmiany w interfejsie API
- Dodano argument do filtrowania
TraceSectionMetrictylko do pakietu docelowego, domyślnie włączony (Ia219b, b/292208786)
Poprawki błędów
- Zmieniliśmy nazwę argumentu instrumentacji
fullTracing.enablenaperfettoSdkTracing.enable, aby zachować spójność z nazwą artefaktu i innymi odniesieniami.fullTracing.enablenadal będzie działać jako opcja rezerwowa. (I7cc00) - Wewnętrzne punkty śledzenia biblioteki testu porównawczego (w tym śledzenie pętli/fazy mikrotestu porównawczego) będą teraz wyświetlane w przeglądarce śledzenia systemu w Studio i zagnieżdżone w odpowiednim procesie w Perfetto. (I6b2e7, b/293510459)
- Usunięto błąd NOT-PROFILEABLE makrotestu porównawczego w interfejsie API 31 i nowszych oraz pominięto sprawdzanie profilowania na urządzeniach z dostępem do roota w trybie eng/userdebug. (I2abac, b/291722507)
- Podczas korzystania z optymalizacji układu Dex reguły profilu uruchamiania są teraz również traktowane jako reguły profilu podstawowego. (aosp/2684246, b/293889189)
Wersja 1.2.0-beta02
26 lipca 2023 r.
Publikacja androidx.benchmark:benchmark-*:1.2.0-beta02 Wersja 1.2.0-beta02 zawiera te zatwierdzenia.
Zmiany w interfejsie API
- Dodano eksperymentalne interfejsy API do niestandardowych danych i konfiguracji mikrotestów porównawczych (np. profilera i śledzenia). (I86101, b/291820856)
Poprawki błędów
- Zgłaszanie błędu w makrobenchmarku, gdy system operacyjny jest nieprawidłowo skonfigurowany do śledzenia, co zostało niedawno naprawione w emulatorach API 26/28 ARM64. (I0a328, b/282191686)
- Dodano szczegółowe informacje o błędzie resetowania kompilacji, aby zasugerować aktualizację emulatora, ponieważ w niektórych emulatorach ten problem został niedawno rozwiązany. (I8c815, b/282191686)
- Zmień zależność
androidx.test.uiautomator:uiautomator:2.2.0naapizamiastimplementation. (I1981e)
Wersja 1.2.0-beta01
18 lipca 2023 r.
Publikacja androidx.benchmark:benchmark-*:1.2.0-beta01 Wersja 1.2.0-beta01 zawiera te zatwierdzenia.
Poprawki błędów
- Naprawiono problem z czasowym pomijaniem ostrzeżeń w wynikach analizy porównawczej w Studio oraz problem z niepojawianiem się w Studio początkowych białych znaków w wynikach analizy porównawczej (Ia61d0, b/227205461, b/286306579, b/285912360).
- Poprawiono komentarz dotyczący:
FrameTimingMetric. Rodzaj danych ma nazwęframeDurationCpuMs. (Ib097f, b/288830934).
Wersja 1.2.0-alpha16
21 czerwca 2023 r.
Publikacja androidx.benchmark:benchmark-*:1.2.0-alpha16 Wersja 1.2.0-alpha16 zawiera te zmiany.
Zmiany w interfejsie API
- Nazwa interfejsu API
BaselineProfileRule.collectBaselineProfile()została zmieniona naBaselineProfileRule.collect(). (I4b665)
Poprawki błędów
- Macrobenchmark obsługuje
androidx.benchmark.profiling.mode = MethodTracing. (I7ad37, b/285912360) - Profilowanie mikrobenczmarków zostało przeniesione do osobnej fazy, więc odbywa się sekwencyjnie po pomiarze, a nie zamiast niego. Jeśli są dostępne, sekcje logu czasu
MethodTracingsą teraz uwzględniane w przechwyconym logu czasu Perfetto. (I9f657, b/285014599) - Dodaj pomiar liczby do:
TraceSectionMetricz:Mode.Sum. (Ic121a, b/264398606)
Wersja 1.2.0-alpha15
7 czerwca 2023 r.
Publikacja androidx.benchmark:benchmark-*:1.2.0-alpha15 Wersja 1.2.0-alpha15 zawiera te zatwierdzenia.
Nowe funkcje
- Dodano eksperymentalny symbol
MemoryUsageMetricdo śledzenia wykorzystania pamięci przez aplikację docelową. (I56453, b/133147125, b/281749311) - Dodanie obsługi w pełni niestandardowych konfiguracji Perfetto za pomocą
PerfettoTrace.record(If9d75, b/280460183) - Dodaliśmy właściwość, która umożliwia pominięcie generowania profilu podstawowego. Wykorzystanie:
./gradlew assemble -Pandroidx.baselineprofile.skipgeneration. (I37fda, b/283447020)
Zmiany w interfejsie API
- Interfejs
collectBaselineProfileAPI zawsze generuje stabilne profile podstawowe. Interfejs APIcollectStableBaselineProfilezostał usunięty. Zamiast niego należy używaćcollectBaselineProfile. (I17262, b/281078707) - Zmieniliśmy argument
filterPredicatefunkcjiBaselineProfileRulena wartość niezerową z równoważną wartością domyślną, aby domyślne działanie filtra było lepiej widoczne w dokumentacji. (I3816e)
Poprawki błędów
- Wyłącz śledzenie
IsolationActivityi Perfetto wdryRunMode, aby znacznie poprawić wydajność, ponieważ te procesy zajmowały większość czasu działania. (Ie4f7d) - Obsługa próbkowania stosu wywołań w testach Macrobenchmark przy użyciu argumentów testu z instrumentacją
androidx.benchmark.profiling.mode=StackSamplingiandroidx.benchmark.profiling.sampleFrequency. (I1d13b, b/282188489) - Naprawiliśmy błąd powodujący awarię podczas upuszczania obiektów cieniujących na Androidzie U (API 34) oraz w emulatorach. (I031ca, b/274314544)
Wersja 1.2.0-alpha14
3 maja 2023 r.
Publikacja androidx.benchmark:benchmark-*:1.2.0-alpha14 Wersja 1.2.0-alpha14 zawiera te zatwierdzenia.
Poprawki błędów
- Naprawiono problem z ignorowaniem przez
FrameTimingMetricklatek z niespójnymi identyfikatorami klatek. Powodowało to, że niektóre animacje w najnowszych wersjach platformy (API 31+) ignorowały wiele klatek podczas animacjiRenderThread(np. podczas efektu fali). (I747d2, b/279088460) - Naprawiliśmy błąd związany z analizowaniem przez procesor logów czasu o rozmiarze większym niż 64 MB. (Ief831, b/269949822)
- Naprawiliśmy błąd, który powodował, że generowanie profilu podstawowego na Androidzie U kończyło się niepowodzeniem z powodu innych danych wyjściowych polecenia
pm dump-profiles. (Id1392, b/277645214) - Poprawiono skrypt blokowania taktowania GPU, aby prawidłowo porównywał ciągi znaków (I53e54, b/213935715).
Wersja 1.2.0-alpha13
5 kwietnia 2023 r.
Publikacja androidx.benchmark:benchmark-*:1.2.0-alpha13 Wersja 1.2.0-alpha13 zawiera te zatwierdzenia.
Zmiany w interfejsie API
- Dodano parametr typu profilu podczas generowania profili podstawowych, aby obsługiwać nadchodzącą funkcję profilu uruchamiania (Ie20d7, b/275093123).
- Dodano nowy eksperymentalny interfejs API
TraceMetricdo definiowania w pełni niestandardowych danych na podstawie zawartości logu Perfetto. (I4ce31, b/219851406) - Dodaj eksperymentalny rodzaj danych, aby określić liczbę błędów strony podczas testu porównawczego. (I48db0)
Wersja 1.2.0-alpha12
22 marca 2023 r.
Publikacja androidx.benchmark:benchmark-*:1.2.0-alpha12 Wersja 1.2.0-alpha12 zawiera te zmiany.
Nowe funkcje
- Nowa wtyczka Gradle profilu Baseline została wydana w wersji alfa, co ułatwia generowanie profilu Baseline i upraszcza proces programowania.
Zmiany w interfejsie API
- Usunięto obsługę śledzenia Perfetto w przypadku interfejsów API na poziomach 21 i 22, co obejmuje zarówno testy porównawcze, jak i eksperymentalne interfejsy API
PerfettoTrace. Przed tą wersją połączeniaUiAutomationbyły na niektórych urządzeniach niestabilne. (I78e8c) - Dodano publiczny eksperymentalny interfejs API dla
PerfettoTraceProcessor, aby umożliwić analizowanie treści logów czasu oczekiwania. To krok w kierunku w pełni niestandardowych danych opartych na danych śledzenia Perfetto. (I2659e, b/219851406)
Wersja 1.2.0-alpha11
8 marca 2023 r.
Publikacja androidx.benchmark:benchmark-*:1.2.0-alpha11 Wersja 1.2.0-alpha11 zawiera te zatwierdzenia.
Poprawki błędów
- Naprawiliśmy błędy powodujące awarie w
MacrobenchmarkRuleiBaselineProfileRulepodczas ponownej instalacji lub wyodrębniania profili z pakietu aplikacji z wieloma plikami APK. (I0d8c8, b/270587281)
Wersja 1.2.0-alpha10
22 lutego 2023 roku
Publikacja androidx.benchmark:benchmark-*:1.2.0-alpha10 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, dzięki nowej funkcji platformy. Wcześniej konieczne było posiadanie urządzenia z dostępem do roota lub usunięcie całego stanu aplikacji (np. loginu użytkownika) przed każdym uruchomieniem testu porównawczego. (I9b08c, b/249143766)
Poprawki błędów
- Naprawiono
DryRunMode, aby nie ulegał już awarii w przypadku pustego profilu z powodu pomijania kompilacji. Zamiast tego wykonuje jedną iterację i wyodrębnia profil, aby mieć pewność, że coś zostało zarejestrowane. (I2f05d, b/266403227) - Naprawiono awarię
PowerMetricpodczas sprawdzania obecności powerstats na starszych poziomach interfejsu API. (5faaf9, b/268253898)
Wersja 1.2.0-alpha09
11 stycznia 2023 r.
Publikacja androidx.benchmark:benchmark-*:1.2.0-alpha09 Wersja 1.2.0-alpha09 zawiera te zmiany.
Poprawki błędów
- Włączono przekazywanie argumentu instrumentacji
Nonedoandroidx.benchmark.enabledRules, aby wyłączyć wszystkie testy porównawcze i generowanie profilu podstawowego. (I3d7fd, b/258671856) - Naprawiono przechwytywanie
PerfettoTracew modułach aplikacji (czyli w plikach APK testów bez samoinstrumentacji) (I12cfc) - Poprawiono kolejność argumentów polecenia adb pull w profilu bazowym w danych wyjściowych Studio (I958d1, b/261781624)
- Emulator Arm API 33 jest teraz prawidłowo rozpoznawany podczas próby uruchomienia testu makro i prawidłowo wyświetla ostrzeżenie. (69133b,b/262209591)
- Pomijanie sprawdzania poziomu baterii na urządzeniach bez baterii w bibliotece Macrobenchmark (fe4114, b/232448937)
Wersja 1.2.0-alpha08
7 grudnia 2022 roku
Publikacja androidx.benchmark:benchmark-*:1.2.0-alpha08 Wersja 1.2.0-alpha08 zawiera te zatwierdzenia.
Zmiany w interfejsie API
- Dodaliśmy nowe eksperymentalne interfejsy API
PerfettoTrace.record {}iPerfettoTraceRule, które umożliwiają przechwytywanie logów Perfetto (nazywanych też logami systemowymi) w ramach testu, aby sprawdzać działanie i wydajność testu. (I3ba16) BaselineProfileRuleakceptuje teraz predykat filtra zamiast listy prefiksów pakietów. Dzięki temu test ma pełną kontrolę nad filtrowaniem. (I93240)- Dodano eksperymentalny interfejs API
BaselineProfileRule.collectStableBaselineProfile, który czeka, aż profil referencyjny będzie stabilny przez N iteracji. (I923f3) - Dodano możliwość określenia prefiksu nazwy pliku wyjściowego podczas generowania profili podstawowych za pomocą
BaselineProfileRule. (I7b59f, b/260318655)
Poprawki błędów
- Poprawiono bezpieczeństwo zapisu plików wyjściowych, co powinno zapobiegać niezauważonemu niezapisywaniu lub niedołączaniu plików wyjściowych, zwłaszcza w przypadku interfejsu API na poziomie 21/22. (If8c44, b/227510293)
- Popraw wyniki śledzenia
simpleperf, aby prawidłowo utworzyć i umieścić plik. Powinno to też rozwiązać problemy, w których plik nie został pomyślnie pobrany przez Gradle. (I12a1c, b/259424099) - Ulepszyliśmy komunikat o błędzie wyświetlany, gdy instalator profilu jest za stary. Teraz zamiast informacji o braku obsługi wyświetla się komunikat o konieczności zaktualizowania wersji instalatora profili (1.2.1) w celu pomiaru profili podstawowych na interfejsach API od 31 do 33. (Ia517f, b/253519888)
- Naprawiono kilka błędów poleceń powłoki w komunikacie o błędzie „Wymagany interfejs API <=23”, w tym błędy konfiguracji pliku binarnego przechwytywania Perfetto i błędy przechwytywania śladu (Ib6b87, b/258863685).
- Automatycznie sortuj wygenerowane reguły profilu, aby zminimalizować liczbę zmian, gdy zmieniają się one w czasie (podczas sprawdzania reguł profilu w systemie kontroli źródła). (Ie2509)
- Naprawiono awarię na urządzeniach bez roota z Androidem w wersji starszej niż 13 (API 33) z komunikatem
Expected no stderr from echo 3 > /proc/sys/vm/drop_caches(I6c245, b/259508183)
Znane problemy
– MacrobenchmarkScope.dropShaderCache() może ulec awarii z powodu braku rejestru transmisji w pliku manifestu 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 (nie testu porównawczego) ten kod:
<!-- 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.
Publikacja androidx.benchmark:benchmark-*:1.2.0-alpha07 Wersja 1.2.0-alpha07 zawiera te zatwierdzenia.
Zmiany w interfejsie API
- Dodaje
PowerMetricinterfejs API do pomiaru energii i mocy w testach porównawczych. (Ife601, b/220183779) - Naprawiono błąd
MacrobenchmarkScope.dropShaderCache(), aby faktycznie usuwać pamięć podręczną cieniowania. Dzięki temu z testów porównawczychStartupMode.COLDusuwane jest około 20 ms szumu, ponieważ shadery są teraz konsekwentnie czyszczone przy każdej iteracji. Wcześniej kompilacjaPartialz użyciem iteracji rozgrzewających podawała nieprawidłowo wysokie wartości, ponieważ buforowanie cieniowania było bardziej prawdopodobne podczas rozgrzewania. To rozwiązanie wymaga urządzenia z dostępem do roota lub użyciaprofileinstaller:1.3.0-alpha02w aplikacji docelowej. Informacje o zmianach w interfejsie API bibliotekiProfileInstallerznajdziesz na stronie ProfileInstaller 1.30-alpha02. (Ia5171, b/231455742) - Dodaliśmy
TraceSectionMode("label", Mode.Sum), co umożliwia pomiar łącznego czasu spędzonego w wielu sekcjach śladu z tą samą etykietą. Na przykładTraceSectionMetric("inflate", Mode.Sum)będzie raportować daneinflateMsdotyczące łącznego czasu spędzonego na inflacji w makrobenchmarku. Usunęliśmy też wymaganie dotyczące interfejsu API w wersji 29, ponieważTraceSectionMetricwspółpracuje zandroidx.tracing.Tracena niższych poziomach interfejsu API dzięki użyciuforceEnableAppTracingw aplikacji docelowej. (Id7b68, b/231455742)
Poprawki błędów
- Zwiększyliśmy bezpieczeństwo wszystkich wewnętrznych poleceń powłoki przez sprawdzanie wszystkich danych wyjściowych i błędów. (I5984d, b/255402908, b/253094958)
- Określ urządzenie w poleceniu profilu podstawowego
adb pull, aby w przypadku połączenia wielu urządzeń (maksymalnie jednego emulatora) można było po prostu skopiować polecenie pobierania (I6ac6c, b/223359380). - Dodaj błąd, jeśli plik APK testu makrobenchmarkowego nie jest skonfigurowany jako samodzielnie instrumentujący. Ten błąd uniemożliwia przeprowadzanie testów porównawczych makro w procesie aplikacji docelowej. W tym przypadku makrotesty nie będą mogły skompilować, zamknąć ani uruchomić aplikacji na zimno ani kontrolować jej uprawnień (I4279b).
- Rozwiązaliśmy problem w
measureRepeated(), który powodował, żeStartupMode.COLDnie kończył procesu docelowego posetupBlock. Teraz interakcja z aplikacjąsetupBlocknie spowoduje, że proces aplikacji będzie nadal działać, a pomiar uruchomienia „na zimno” będzie nieprawidłowy. (I8ebb7)
Wersja 1.2.0-alpha06
24 października 2022 r.
Publikacja androidx.benchmark:benchmark-*:1.2.0-alpha06 Wersja 1.2.0-alpha06 zawiera te zatwierdzenia.
Zmiany w interfejsie API
BaselineProfileRulenie wymaga już uprawnień roota na Androidzie 13 (API 33) i nie jest już funkcją eksperymentalną. (Ie0a7d, b/250083467, b/253094958)- Ta zmiana rozwiązuje też problem z zapisywaniem profili z aplikacji na dysku na urządzeniach bez uprawnień roota, ale wymaga zaktualizowania zależności profileinstaller aplikacji docelowej.
- Aby używać
BaselineProfileRulelubCompilationMode.Partial(warmupIterations)na urządzeniu bez uprawnień roota, musisz też zaktualizować aplikację docelową, aby używałaandroidx.profileinstaller.profileinstaller:1.3.0-alpha01. Umożliwia to prawidłowe zapisanie profilu na dysku, dzięki czemu można go skompilować lub wyodrębnić.
Poprawki błędów
- Naprawiono błąd powodujący awarię
SampledProfilingw interfejsie API 33 lub nowszym (I40743, b/236109374).
Wersja 1.2.0-alpha05
5 października 2022 r.
Publikacja androidx.benchmark:benchmark-*:1.2.0-alpha05 Wersja 1.2.0-alpha05 zawiera te zmiany.
Poprawki błędów
- Naprawiono podział klatek w przeglądarce śledzenia systemu Studio w przypadku śladów przechwyconych na potrzeby testów porównawczych (I3f3ae, b/239677443).
- Poprawka
FrameTimingMetric, aby na liścieFrameOverrunzamiast API 29 było API 31 (I716dd, b/220702554) - Ustaw iterację w
BaselineProfileRulei wyraźnie zgłoś błąd, 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.
Publikacja androidx.benchmark:benchmark-*:1.2.0-alpha04 Wersja 1.2.0-alpha04 zawiera te zatwierdzenia.
Nowe funkcje
Dodaj obsługę argumentu instrumentacji
dryRunMode.enabledo testu Macrobenchmark (jest już dostępny w Microbenchmark), aby przyspieszyć lokalne programowanie i weryfikację automatyzacji aplikacji (np. przed przesłaniem). Spowoduje to zastąpienie iteracji wartością 1, pominięcie kompilacji, pominięcie wszystkich błędów konfiguracji i wyłączenie danych wyjściowych pliku JSON pomiaru. (Ib51b4, b/175149857)W wierszu poleceń Gradle:
./gradlew macrobenchmark:cC -P android.testInstrumentationRunnerArguments.androidx.benchmark.dryRunMode.enable=trueW pliku build.gradle:
android { defaultConfig { testInstrumentationRunnerArgument 'androidx.benchmark.dryRunMode.enable', 'true' } }
Poprawki błędów
- Naprawiliśmy błąd w
StartupTimingMetric, dzięki czemu nie trzeba już uruchamiać mierzonych aktywności przezMacrobenchmarkScope.startActivityAndWait(). Oznacza to, że dane mogą obejmować uruchomienia np. z powiadomień,Context.startActivity(), nawigacji opartej na aktywności w aplikacji lub poleceń powłoki. (Ia2de6, b/245414235) - Naprawiono błąd, w wyniku którego
startActivityAndWaitprzekraczał limit czasu podczas oczekiwania na zakończenie uruchamiania na emulatorach, poprzez zmniejszenie rygoru wykrywania klatek. (Ibe2c6, b/244594339, b/228946895)
Wersja 1.2.0-alpha03
7 września 2022 roku
Publikacja androidx.benchmark:benchmark-*:1.2.0-alpha03 Wersja 1.2.0-alpha03 zawiera te zatwierdzenia.
Nowe funkcje
- Dodano eksperymentalne interfejsy API do niezależnego używania
BenchmarkState, oddzielnie odBenchmarkRule/JUnit4. (Id478f, b/228489614)
Poprawki błędów
- Dodaliśmy element zastępczy Leanback dla
startActivityAndWait. (01ed77, b/242899915)
Wersja 1.2.0-alpha02
24 sierpnia 2022 r.
Publikacja androidx.benchmark:benchmark-*:1.2.0-alpha02 Wersja 1.2.0-alpha02 zawiera te zatwierdzenia.
Zmiany w interfejsie API
- Domyślnie
am force stopdlaMacrobenchmarkScope.killProcess(), nawet w przypadku zrootowania, z wyjątkiem generowania profilu podstawowego. Można to 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 dotyczących zasilania ODPM na urządzeniach bez uprawnień roota. (a38c78, b/229623230)
Wersja 1.2.0-alpha01
27 lipca 2022 roku
Publikacja androidx.benchmark:benchmark-*:1.2.0-alpha01 Wersja 1.2.0-alpha01 zawiera te zmiany.
Nowe funkcje
- Nowy komponent tracing-perfetto-common, który umożliwia narzędziom włączenie śledzenia Perfetto SDK w aplikacji, która je udostępnia (I2cc7f).
Dodano argument
androidx.benchmark.enabledRulesinstrumentacji, aby umożliwić filtrowanie uruchomień testów porównawczych na poziomie makro tylko pod kątem testów porównawczych lub tylko pod kątem generowania profilu podstawowego. Przekaż „Macrobenchmark” lub „BaselineProfile”, aby uruchomić tylko 1 rodzaj testu, np. podczas generowaniaBaselineProfilesw emulatorze. Obsługiwana jest też lista rozdzielona przecinkami. (I756b7, b/230371561)Na przykład w pliku build.gradle testu makro:
android { defaultConfig { testInstrumentationRunnerArgument 'androidx.benchmark.enabledRules', 'BaselineProfile' } }Możesz też użyć wiersza poleceń Gradle:
./gradlew macrobenchmark:cC -P android.testInstrumentationRunnerArguments.androidx.benchmark.enabledRules=BaselineProfile
Zmiany w interfejsie API
- Dodano nowy
PowerMetricdo pomiaru zadań związanych z energią i mocą w testach porównawczych. (I9f39b, b/220183779) - Dodano nowy tryb kompilacji
CompilationMode.Ignore, który pomija resetowanie profilu i kompilację. (Ibbcf8, b/230453509) - Dodano nowy parametr do
BaselineProfileRule#collectBaselineProfile, aby filtrować plik wyjściowy według nazw pakietów (If7338, b/220146561). - Umożliwia programiście rozładowanie urządzenia w celu pomiaru zużycia energii. (I6a6cb)
- Dodaliśmy możliwość wyczyszczenia pamięci podręcznej shaderów w
MacrobenchmarkScope. (I32122) - Umożliwia deweloperowi skonfigurowanie wyświetlania typu wskaźnika i szczegółów wybranych kategorii podsystemów. (I810c9)
- Wcześniej w przypadku uruchomienia testu porównawczego na nieobsługiwanym urządzeniu zgłaszany był błąd
UnsupportedOperationException. Teraz błąd UOE występuje tylko wtedy, gdy wskaźnik jest używany na nieobsługiwanym urządzeniu (np.PowerMetric.configure). (I5cf20, b/227229375) - Dodano
TotalPowerMetriciTotalEnergyMetricdo pomiaru całkowitej mocy i energii w każdej kategorii systemu w testach porównawczych. (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 poszczególnymi testami porównawczymi makro na nieuzyskanych uprawnieniach roota. Niestety wymaga to ponownej instalacji pliku APK w każdej iteracji, co spowoduje wyczyszczenie danych aplikacji w przypadku każdego testu porównawczego. (I31c74, b/230665435)
- Naprawiono błąd powodujący awarię podczas nagrywania śladu w interfejsie API 21/22 (If7fd6, b/227509388, b/227510293, b/227512788).
- Poprawiono wykrywanie zakończenia uruchamiania aktywności, aby naprawić wyjątek „Nie można odczytać żadnych danych” w makrotestach porównawczych uruchamiania. (Ia517c)
Wersja 1.1.1
Wersja 1.1.1
9 listopada 2022 r.
Publikacja androidx.benchmark:benchmark-*:1.1.1 Wersja 1.1.1 zawiera te zatwierdzenia.
Poprawki błędów
- Naprawiono błąd
android.system.ErrnoException: open failed: EACCES, który występował na niektórych urządzeniach z Androidem 11 (API 30) lub nowszym. To jest poprawka zastosowana metodą cherry-pick z1.2.0-alpha01. (aosp/2072249)
Wersja 1.1.0
Wersja 1.1.0
15 czerwca 2022 r.
Publikacja androidx.benchmark:benchmark-*:1.1.0 Wersja 1.1.0 zawiera te zatwierdzenia.
- Ta wersja jest identyczna z wersją
androidx.benchmark:benchmark-*:1.1.0-rc03.
Ważne zmiany od wersji 1.0.0
Obsługa Jetpack Macrobenchmarks, która umożliwia pomiar interakcji w całej aplikacji, takich jak uruchamianie i przewijanie, zapewnia możliwość przechwytywania logów czasu i mierzenia sekcji logów czasu.
Obsługa profili podstawowych
CompilationMode.Partial– pomiar skuteczności profili podstawowych.@BaselineProfileRule, aby automatycznie generować profile Baseline dla danej głównej ścieżki użytkownika.
Obsługa danych o alokacji i profilowania podczas uruchamiania mikrotestów porównawczych.
Wersja 1.1.0-rc03
1 czerwca 2022 r.
Publikacja androidx.benchmark:benchmark-*:1.1.0-rc03 Wersja 1.1.0-rc03 zawiera te zatwierdzenia.
Poprawki błędów
Unikaj ponownej instalacji pakietu docelowego przy każdej iteracji testu porównawczego. ( aosp/2093027, b/231976084)
Usuń opóźnienie
300mszpressHome(). (aosp/2086030, b/231322975)Zwiększ szybkość iteracji Macrobenchmark, optymalizując polecenia Shell używane w tle. (aosp/2086023, b/231323582)
Obsługa zarządzanych urządzeń Gradle podczas generowania profili podstawowych za pomocą biblioteki Macrobenchmark. (aosp/2062228, b/228926421)
Wersja 1.1.0-rc02
11 maja 2022 roku
Publikacja androidx.benchmark:benchmark-*:1.1.0-rc02 Wersja 1.1.0-rc02 zawiera te zatwierdzenia.
- Pamiętaj, że ta wersja zawiera zmianę działania, ponieważ aplikacje są teraz całkowicie ponownie instalowane między poszczególnymi testami porównawczymi, aby zapewnić dokładne pomiary.
Poprawki błędów i zmiany w działaniu
Rozwiązaliśmy problem polegający na tym, że kompilacja aplikacji nie była prawidłowo resetowana między testami porównawczymi makro, a w przypadku kompilacji bez roota nie była resetowana wcale. Rozwiązuje to wiele problemów, w których przeprowadzenie kilku testów powodowało, że
CompilationModenie miało wpływu na pomiary lub miało na nie niewielki wpływ. Aby rozwiązać ten problem, aplikacja docelowa ponownie instaluje teraz każdą metodę testową, co powoduje wyczyszczenie danych aplikacji między poszczególnymi testami makrobenchmark. (I31c74, b/230665435)Ponieważ uniemożliwia to aplikacjom konfigurowanie stanu przed testami, można teraz pominąć kompilację lub ponowną instalację, aby obejść ten problem. Możesz na przykład w pełni skompilować projekt za pomocą polecenia powłoki
cmd package compile -f -m speed <package>, a następnie pominąć krok kompilacji w makrobenchmarku.Na przykład w pliku build.gradle testu makrobenchmark:
android { defaultConfig { testInstrumentationRunnerArgument 'androidx.benchmark.compilation.enabled, 'false' } }Możesz też użyć wiersza poleceń Gradle:
./gradlew macrobenchmark:cC -P android.testInstrumentationRunnerArguments.androidx.benchmark.compilation.enabled=falseUmożliwiliśmy udostępnianie modułu między testami generującymi makrobenchmarki i profile bazowe przez dodanie argumentu instrumentacji
androidx.benchmark.enabledRules. Przekaż „Macrobenchmark” lub „BaselineProfile”, aby uruchomić tylko 1 typ testu, np. podczas generowaniaBaselineProfilesw emulatorze. (I756b7, b/230371561)Na przykład w pliku build.gradle testu makrobenchmark:
android { defaultConfig { testInstrumentationRunnerArgument 'androidx.benchmark.enabledRules', 'BaselineProfile' } }Możesz też użyć wiersza poleceń Gradle:
./gradlew macrobenchmark:cC -P android.testInstrumentationRunnerArguments.androidx.benchmark.enabledRules=BaselineProfile
Wersja 1.1.0-rc01
20 kwietnia 2022 r.
Publikacja androidx.benchmark:benchmark-*:1.1.0-rc01 Wersja 1.1.0-rc01 zawiera te zatwierdzenia.
Poprawki błędów
- Linki wyjściowe profilu Baseline w Android Studio używają teraz unikalnej nazwy pliku. Dzięki temu dane wyjściowe zawsze odzwierciedlają najnowsze wyniki użycia
BaselineProfileRule. ( aosp/2057008, b/228203086 )
Wersja 1.1.0-beta06
6 kwietnia 2022 roku
Publikacja androidx.benchmark:benchmark-*:1.1.0-beta06 Wersja 1.1.0-beta06 zawiera te zatwierdzenia.
Poprawki błędów
- Naprawiono błąd powodujący awarię podczas nagrywania śladu w interfejsie API 21/22 (If7fd6, b/227509388).
- Poprawiono wykrywanie zakończenia uruchamiania aktywności, aby naprawić wyjątek „Nie można odczytać żadnych danych” w makrotestach porównawczych uruchamiania. (Ia517c)
- Naprawia wskaźniki uruchamiania w przypadku testów porównawczych Macrobenchmark, gdy używany jest parametr
CompilationMode.None(). Przed tą zmianąCompilationMode.Partial()wydawał się wolniejszy niżCompilation.None(). (611ac9).
Wersja 1.1.0-beta05
23 marca 2022 r.
Publikacja androidx.benchmark:benchmark-*:1.1.0-beta05 Wersja 1.1.0-beta05 zawiera te zatwierdzenia.
Poprawki błędów
- Zakończ działanie pakietu po pominięciu instalacji profilu podczas korzystania z
CompilationMode.None. (aosp/1991373) - Rozwiązaliśmy problem, który powodował, że biblioteka Macrobenchmarks nie mogła zbierać danych o uruchamianiu podczas korzystania z
StartupMode.COLD. (aosp/2012227, b/218668335)
Wersja 1.1.0-beta04
23 lutego 2022 r.
Publikacja androidx.benchmark:benchmark-*:1.1.0-beta04 Wersja 1.1.0-beta04 zawiera te zmiany.
Poprawki błędów
Naprawiliśmy błąd polegający na braku danych na Androidzie 10 i
NoSuchElementException, który był spowodowany nieprawidłowym rejestrowaniem nazw procesów w śladach. (Ib4c17, b/218668335)Używaj
PowerManagerdo wykrywania ograniczeń termicznych na urządzeniach z Androidem Q (API 29) i nowszym. Znacznie zmniejsza to częstotliwość fałszywych alarmów w wykrywaniu dławienia termicznego (ponowna próba testu porównawczego po 90 sekundach schładzania) i znacznie przyspiesza testy porównawcze w kompilacjach użytkowników. Zapewnia też wykrywanie dławienia, nawet gdy zegary są zablokowane (jeśli są zablokowane na zbyt wysokim poziomie dla środowiska fizycznego urządzenia). (I9c027, b/217497678, b/131755853)Filtrowanie profilowania próbkowania simpleperf tylko do wątku
measureRepeatedw celu uproszczenia kontroli (Ic3e12, b/217501939)Obsługa danych dotyczących wskaźników UI z nazwanych podprocesów UI w aplikacjach wieloprocesowych (Ice6c0, b/215988434)
Filtrowanie reguł profilu Baseline pod kątem Androida 9 (SDK 28). aosp/1980331 b/216508418
Pomiń instalację profilu podczas korzystania z
Compilation.None(). Dodatkowo zgłaszaj ostrzeżenia, gdy aplikacja korzysta ze starszej wersjiandroidx.profileinstalleri wtyczki Androida do obsługi Gradle. aosp/1977029
Wersja 1.1.0-beta03
9 lutego 2022 r.
Publikacja androidx.benchmark:benchmark-*:1.1.0-beta03 Wersja 1.1.0-beta03 zawiera te zmiany.
Zmiany w interfejsie API
- Dodano
AudioUnderrunMetricdo biblioteki testów porównawczych makro pod flagą eksperymentalną, aby umożliwić wykrywanie niedoborów dźwięku (Ib5972) BaselineProfileRulenie akceptuje już blokusetup, ponieważ działał on tak samo jakprofileBlock. (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 ślady profilera mikropomiarów nie były aktualizowane w kolejnych uruchomieniach, gdy były połączone w danych wyjściowych Studio (I5ae4d, b/214917025).
- Zapobieganie poleceniom powłoki kompilacji w przypadku interfejsu API 23 (Ice380)
- Zmieniono nazwy
FrameCpuTime->FrameDurationCpu,FrameUiTime->FrameDurationUi, aby wyjaśnić, że są to okresy, a nie sygnatury czasowe, i dopasować prefiksy. (I0eba3, b/216337830)
Wersja 1.1.0-beta02
26 stycznia 2022 r.
Publikacja androidx.benchmark:benchmark-*:1.1.0-beta02 Wersja 1.1.0-beta02 zawiera te zmiany.
Poprawki błędów
- Wyniki profilowania próbkowania stosu / śledzenia metod w Microbenchmark są teraz połączone w danych wyjściowych Studio, podobnie jak inne dane wyjściowe profilowania, i nie pomijają danych dotyczących alokacji. (Idcb65, b/214440748, b/214253245)
- BaselineProfileRule wyświetla teraz polecenie
adb pullw logcat i w danych wyjściowych Studio, aby pobrać wygenerowany plik tekstowy BaselineProfile. (f08811)
Wersja 1.1.0-beta01
12 stycznia 2022 r.
Publikacja androidx.benchmark:benchmark-*:1.1.0-beta01 Wersja 1.1.0-beta01 zawiera te zmiany.
Poprawki błędów
- Naprawia ignorowanie argumentu programu profilującego enable. (I37373, b/210619998)
- Usunięto wycofaną metodę
CompliationModes(I98186, b/213467659). - Dla przejrzystości zmieniono argument profilu podstawowego
CompilationMode.Partialna typ wyliczeniowy. (Id67ea)
Wersja 1.1.0-alpha13
15 grudnia 2021 roku
Publikacja androidx.benchmark:benchmark-*:1.1.0-alpha13 Wersja 1.1.0-alpha13 zawiera te zmiany.
Zmiany w interfejsie API
- Dodaj do danych wyjściowych mikrotestu porównawczego w systemie Android Q (API 29+) śledzenie systemu o niskim obciążeniu. Pamiętaj, że obecnie nie obejmuje to niestandardowego śledzenia (za pomocą interfejsów API Jetpack
android.os.Tracelubandroidx.tracing), aby nie wpływać na wyniki. Śledzenie to powinno być przydatne w diagnozowaniu niestabilności, zwłaszcza w przypadku źródeł spoza testu porównawczego. (I298be, b/205636583, b/145598917) - Podziel
CompilationModesna 3 klasy: Pełna, Brak, Częściowa. Wcześniej ich nazwy były niespójne i pochodziły od argumentów kompilacji (które teraz traktujemy jako szczegóły implementacji) i funkcji. Dzięki temu łatwiej jest zrozumieć kompromisy, potencjalne kombinacje i zachowania w różnych wersjach platformy. (I3d7bf, b/207132597) - Konfiguracja i pomiar są teraz zawsze parami, w odpowiedniej kolejności. Możesz teraz wysyłać zapytania dotyczące nazwy pakietu i iteracji (chociaż w niektórych scenariuszach rozgrzewki iteracja może mieć wartość
null). (Id3b68, b/208357448, b/208369635)
Poprawki błędów
- Naprawiono błąd, który powodował, że
CompilationMode.Speedbył nieprawidłowo traktowany jakoNone(I01137)
Wersja 1.1.0-alpha12
17 listopada 2021 r.
Publikacja androidx.benchmark:benchmark-*:1.1.0-alpha12 Wersja 1.1.0-alpha12 zawiera te zatwierdzenia.
Nowe funkcje
- Dodaj eksperymentalny element TraceSectionMetric do niestandardowych pomiarów czasu opartych na śledzeniu. (I99db1, b/204572664)
Poprawki błędów
- Wybudzaj urządzenie przy każdej iteracji, aby umożliwić testowanie interfejsu – wymaga wyłączenia ekranu blokady. (Ibfa28, b/180963442)
- Naprawiono kilka błędów powodujących awarie w trybie profilowania StackSampling na emulatorach i urządzeniach bez uprawnień roota (Icdbda, b/202719335).
- Usunięto 0,5-sekundowy okres uśpienia na końcu każdej iteracji.Jeśli po wprowadzeniu tej zmiany zauważysz brakujące dane, zgłoś błąd. (Iff6aa)
- Zmniejszenie prawdopodobieństwa utraty danych i zmniejszenie obciążenia pamięci związanego ze śledzeniem (Id2544, b/199324831, b/204448861)
- Zmniejsz rozmiar śladu o ok. 40% dzięki przejściu na kompaktowy format przechowywania harmonogramu. (Id5fb6, b/199324831)
- Zaktualizowaliśmy implementacje danych dotyczących uruchamiania, aby zawsze kończyły się na końcu wątku renderowania. Będzie to bardziej spójne w różnych wersjach platformy i będzie dokładniej odzwierciedlać pomiar danych o korzystaniu z aplikacji. (Ic6b55)
Wersja 1.1.0-alpha11
3 listopada 2021 r.
Publikacja androidx.benchmark:benchmark-*:1.1.0-alpha11 Wersja 1.1.0-alpha11 zawiera te zatwierdzenia.
Zmiany w interfejsie API
- Macrobenchmark ma teraz
minSdkVersiono wartości23. (If2655) - Dodaje nowy eksperymentalny interfejs
BaselineProfileRule, który może generować profile podstawowe dla głównych ścieżek użytkownika w aplikacji. Szczegółowa dokumentacja zostanie udostępniona później. (Ibbefa, b/203692160) - Usuwa wariant interfejsu measureRepeated, który został dodany dla wywołujących w języku Java, ponieważ powodował niejednoznaczność podczas kończenia/rozwiązywania metody. Wywołujący w języku Java ponownie będą musieli zwracać Unit.Instance z funkcji measureRepeated. Jeśli to utrudnienie, zgłoś błąd. Możemy wrócić do tego w przyszłej wersji. (Ifb23e, b/204331495)
Wersja 1.1.0-alpha10
27 października 2021 r.
Publikacja androidx.benchmark:benchmark-*:1.1.0-alpha10 Wersja 1.1.0-alpha10 zawiera te zatwierdzenia.
Zmiany w interfejsie API
- Przeniesienie StartupTimingMetric do starszej wersji, aby działał z interfejsem API 23. Ta nowa implementacja lepiej obsługuje też reportFullyDrawn(), aby poczekać, aż odpowiednie treści zostaną wyrenderowane. (If3ac9, b/183129298)
- Dodano JvmOverloads do wielu metod MacrobenchmarkScope dla wywołujących w języku Java. (I644fe, b/184546459)
- Udostępnij alternatywną funkcję MacrobenchmarkRule.measureRepeated, która używa
Consumer<MacrobenchmarkScope>do idiomatycznego użycia w języku Java. (If74ab, b/184546459)
Poprawki błędów
- Naprawiliśmy błąd, który powodował, że logi czasu nie zaczynały się wystarczająco wcześnie i brakowało danych wskaźników. Powinno 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)
- Zmieniliśmy nazwę FrameNegativeSlack na FrameOverrun, aby lepiej odzwierciedlała jej znaczenie – o ile klatka przekroczyła swój budżet czasu. (I6c2aa, b/203008701)
Wersja 1.1.0-alpha09
13 października 2021 r.
Publikacja androidx.benchmark:benchmark-*:1.1.0-alpha09 Wersja 1.1.0-alpha09 zawiera te zmiany.
Poprawki błędów
- Dodaliśmy obsługę usuwania pamięci podręcznej stron jądra bez uprawnień roota w interfejsie API 31/S+, co zwiększy dokładność uruchamiania w trybie StartupMode.COLD. (Iecfdb, b/200160030)
Wersja 1.1.0-alpha08
29 września 2021 r.
Publikacja androidx.benchmark:benchmark-*:1.1.0-alpha08 Wersja 1.1.0-alpha08 zawiera te zatwierdzenia.
Zmiany w interfejsie API
- Włącz makrotesty porównawcze przewijania, aby można było je uruchamiać z interfejsem API 23 (If39c2, b/183129298).
- Dodano nowy typ próbkowanych danych do interfejsu i danych wyjściowych JSON, który koncentruje się na percentylach wielu próbek na iterację. (I56247, b/199940612)
- Przełączanie na dane zmiennoprzecinkowe w bibliotekach testów porównawczych (obcięte w interfejsie Studio). (I69249, b/197008210)
Wersja 1.1.0-alpha07
1 września 2021 roku
Publikacja androidx.benchmark:benchmark-*:1.1.0-alpha07 Wersja 1.1.0-alpha07 zawiera te zatwierdzenia.
Zmiany w interfejsie API
- Podniesiono minimalny poziom API do 21, aby odzwierciedlić zamierzony najniższy poziom API, który będzie obsługiwany w przyszłości. Obecny minimalny obsługiwany interfejs API jest nadal przekazywany przez RequiredApi() i jest to obecnie 29 (I440d6, b/183129298).
Poprawki błędów
- Poprawki w
ProfileInstallerułatwiające aplikacjom korzystającym z profili podstawowych uruchamianie testów MacroBenchmark za pomocąCompilationMode.BaselineProfile. (I42657, b/196074999) UWAGA: wymaga również aktualizacji do wersjiandroidx.profileinstaller:profileinstaller:1.1.0-alpha04lub nowszej. - Testy porównawcze
StartupMode.COLDiCompilationMode.Nonesą teraz bardziej stabilne. (I770cd, b/196074999)
Wersja 1.1.0-alpha06
18 sierpnia 2021 r.
Publikacja androidx.benchmark:benchmark-*:1.1.0-alpha06 Wersja 1.1.0-alpha06 zawiera te zmiany.
Zmiany w interfejsie API
- Dodano argument instrumentacji
androidx.benchmark.iterations, aby umożliwić ręczne zastępowanie liczby iteracji podczas testowania lub profilowania lokalnego. (6188be, b/194137879)
Poprawki błędów
- Przełączono na Simpleperf jako domyślny profiler próbkowania w przypadku API w wersji 29 lub nowszej. (Ic4b34, b/158303822)
Znane problemy
CompilationMode.BaselineProfilejest w trakcie opracowywania. Na razie nie używaj go do określania, jak dobry jest profil.
Wersja 1.1.0-alpha05
4 sierpnia 2021 r.
Publikacja androidx.benchmark:benchmark-*:1.1.0-alpha05 Wersja 1.1.0-alpha05 zawiera te zatwierdzenia.
1.1.0-alpha04 została anulowana przed opublikowaniem z powodu sporadycznych awarii. b/193827052
Zmiany w interfejsie API
- Zmieniono startActivityAndWait, aby wywoływać uruchamianie za pomocą
am start, co skraca czas każdej iteracji pomiaru o około 5 sekund, ale nie obsługuje już obiektów parcelable intencji. (I5a6f5, b/192009149)
Poprawki błędów
- Zmniejsz agresywność wykrywania dławienia termicznego i ponownie oblicz poziom odniesienia, jeśli dławienie jest wykrywane często. (I7327b)
- Poprawiono FrameTimingMetric, aby działał w wersji beta Androida S (Ib60cc, b/193260119).
- Użyj
EmptyActivity, aby wyłączyć stan wymuszonego zatrzymania aplikacji docelowej i lepiej obsługiwaćCompilationMode.BaselineProfile. (Id7cac, b/192084204) - Zmieniono rozszerzenie pliku logu na
.perfetto-trace, aby było zgodne ze standardem platformy. (I4c236, b/174663039) - StartupTimingMetric generuje teraz dane „fullyDrawnMs”, które mierzą czas do zakończenia renderowania aplikacji. Aby zdefiniować ten wskaźnik dla aplikacji, wywołaj Activity.reportFullyDrawn, gdy początkowe treści będą gotowe, np. gdy początkowe elementy listy zostaną wczytane z bazy danych lub sieci. (Metoda reportFullyDrawn jest dostępna bez sprawdzania wersji kompilacji w przypadku ComponentActivity). Pamiętaj, że test musi trwać wystarczająco długo, aby można było zarejestrować dane (startActivityAndWait nie czeka na reportFullyDrawn). (If1141, b/179176560)
- Obniżenie kosztu dołączania metadanych interfejsu do logów o ponad 50 ms (Ic8390, b/193923003)
- Znacznie zwiększona częstotliwość odpytywania podczas zatrzymywania śledzenia, co może skrócić np.czas działania testu porównawczego uruchamiania o ponad 30% (Idfbc1, b/193723768).
Wersja 1.1.0-alpha03
16 czerwca 2021 r.
Publikacja androidx.benchmark:benchmark-*:1.1.0-alpha03 Wersja 1.1.0-alpha03 zawiera te zatwierdzenia.
Nowe funkcje
- Dodaliśmy nowy element
CompilationMode.BaselineProfile, aby obsługiwać profile zainstalowane 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ć nieprzestarzałego interfejsu API ze składnią, która obsługuje też użytkowników plików .gradle.kts.
Np.
testInstrumentationRunnerArguments["androidx.benchmark.suppressErrors"] = "EMULATOR,LOW-BATTERY"
Wersja 1.1.0-alpha02
18 maja 2021 r.
Wersja 1.1.0-alpha02 testu porównawczego wprowadza ważny komponent – makrotest porównawczy. Oprócz testu porównawczego, który umożliwia pomiar pętli procesora, makrotest porównawczy pozwala mierzyć interakcje w całej aplikacji, takie jak uruchamianie i przewijanie, oraz rejestrować logi czasu. Więcej informacji znajdziesz w dokumentacji biblioteki.
Publikacja androidx.benchmark:benchmark-*:1.1.0-alpha02 Wersja 1.1.0-alpha02 zawiera te zatwierdzenia.
Nowe funkcje
Dodano artefakty Macrobenchmark (androidx.benchmark:benchmark-macro-junit4 i androidx.benchmark:benchmark-macro)
- Zbieranie wskaźników skuteczności uruchamiania, przewijania i animacji w aplikacji lokalnie lub w CI
- Przechwytywanie i sprawdzanie logów czasu w Android Studio
Poprawki błędów
- Obejście problemu z uprawnieniami powłoki w katalogu wyjściowym na Androidzie 12 (uwaga: aby nadal przechwytywać pliki wyjściowe na urządzeniach, których dotyczy problem, może być konieczne zaktualizowanie wtyczki Androida do obsługi 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)
- Uproszczone dane wyjściowe pliku – domyślnie włączone, w katalogu, który nie wymaga
requestLegacyExternalStorage=true(8b5a4d, b/172376362) - Rozwiązuje problem z ostrzeżeniami logcat biblioteki dotyczącymi braku wątku JIT w wersjach platformy, w których nie występuje. (I9cc63, b/161847393)
- Poprawka dotycząca maksymalnej częstotliwości urządzenia odczytującego. (I55c7a)
Wersja 1.1.0-alpha01
10 czerwca 2020 r.
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ą udostępnione. Wersja 1.1.0-alpha01 zawiera te zatwierdzenia.
Nowe funkcje wersji 1.1
- Wskaźnik alokacji – testy porównawcze mają teraz dodatkową fazę po rozgrzewce i pomiarze czasu, która rejestruje liczbę alokacji. Alokacje mogą powodować problemy z wydajnością w starszych wersjach platformy (140 ns w O stało się 8 ns w M – pomiar na Nexusie 5X z zablokowanymi zegarami). Te dane są wyświetlane w danych wyjściowych konsoli Android Studio, a także w sekcji
- Obsługa profilowania – możesz teraz rejestrować dane profilowania na potrzeby testu porównawczego, aby sprawdzić, dlaczego kod może działać wolno. Test wydajności obsługuje śledzenie metod lub próbkowanie metod z ART. Te pliki można sprawdzić za pomocą profilera w Android Studio, klikając Plik > Otwórz.
- Wtyczka Benchmark do obsługi Gradle udostępnia teraz ustawienia domyślne, które ułatwiają konfigurację:
testBuildTypejest domyślnie ustawiona na wersję, aby uniknąć używania zależności z wbudowanym pokryciem kodu. Typ kompilacji wersji jest też skonfigurowany jako domyślny typ kompilacji, co umożliwia Androidowi Studio automatyczne wybieranie prawidłowego wariantu kompilacji podczas pierwszego otwierania projektu. (b/138808399)signingConfig.debugjest używany jako domyślna konfiguracja podpisywania (b/153583269).
** Poprawki błędów **
- Znacznie zmniejszono narzut związany z przejściem do rozgrzewki, w przypadku którego pierwszy pomiar dla każdego testu porównawczego był sztucznie wyższy niż pozostałe. Ten problem był bardziej widoczny w przypadku bardzo małych testów porównawczych (1 mikrosekunda lub mniej). (b/142058671)
- Naprawiono błąd
InstrumentationResultParser, który był wyświetlany w przypadku każdego testu porównawczego podczas uruchamiania z wiersza poleceń. (I64988, b/154248456)
Znane problemy
- Wywołania testu porównawczego z poziomu wiersza poleceń i Gradle nie wyświetlają wyników bezpośrednio. Możesz to obejść, uruchamiając narzędzie w Studio lub analizując plik wyjściowy JSON w celu uzyskania wyników.
- Raportowanie danych porównawczych nie może pobrać raportu z urządzeń, na których zainstalowano aplikację z identyfikatorem applicationId kończącym się na „android” lub „download” (bez rozróżniania wielkości liter). Użytkownicy, którzy napotkają ten problem, powinni uaktualnić wtyczkę Androida do obsługi Gradle do wersji 4.2-alpha01 lub nowszej.
Wersja 1.0.0
Benchmark w wersji 1.0.0
20 listopada 2019 r.
androidx.benchmark:benchmark-common:1.0.0, androidx.benchmark:benchmark-gradle-plugin:1.0.0 i androidx.benchmark:benchmark-junit4:1.0.0 są udostępniane bez zmian w stosunku do wersji 1.0.0-rc01. Wersja 1.0.0 zawiera te zatwierdzenia.
Główne funkcje wersji 1.0.0
Biblioteka Benchmark umożliwia pisanie testów porównawczych wydajności kodu aplikacji i szybkie uzyskiwanie wyników.
Zapobiega to problemom z konfiguracją kompilacji i czasu działania oraz stabilizuje wydajność urządzenia, co zapewnia dokładność i spójność pomiarów. Uruchamiaj testy porównawcze bezpośrednio w Android Studio lub w trybie ciągłej integracji, aby obserwować wydajność kodu w czasie i zapobiegać regresjom.
Główne funkcje:
- Stabilizacja zegara
- Automatyczne ustalanie priorytetów wątków
- Obsługa testowania wydajności interfejsu, np. w przykładzie RecyclerView
- Rozgrzewanie i pętla z uwzględnieniem JIT
- Dane wyjściowe testu porównawczego w formacie JSON do przetwarzania końcowego
Wersja 1.0.0-rc01
23 października 2019 r.
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ą udostępnione. Wersja 1.0.0-rc01 zawiera te zatwierdzenia.
Nowe funkcje
- Dodano śledzenie systrace do testów porównawczych.
Poprawki błędów
- Rozwiązaliśmy problem z niestabilnością wskaźników, który powodował, że kompilacja JIT nie kończyła się przed rozgrzewką z powodu obniżenia priorytetu (b/140773023).
- Ujednolicony katalog wyjściowy JSON we wtyczce Androida do obsługi Gradle w wersjach 3.5 i 3.6
Wersja 1.0.0-beta01
9 października 2019 r.
Wersje 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 zostały opublikowane. Wersja 1.0.0-beta01 zawiera te zmiany.
Nowe funkcje
- Przed każdym rozgrzewaniem uruchamiaj odśmiecanie, aby zmniejszyć obciążenie pamięci z jednego testu porównawczego na następny (b/140895105).
Poprawki błędów
- Dodano zależność
androidx.annotation:android-experimental-lint, dzięki czemu kod w języku Java będzie prawidłowo generować błędy linta, gdy nie będzie używany eksperymentalny interfejs API, podobnie jak w przypadku adnotacji eksperymentalnej w języku Kotlin dla wywołujących w języku Kotlin. - Teraz prawidłowo wykrywa użycie argumentu
additionalTestOutputDirinstrumentacji w przypadku danych wyjściowych w wtyczce Androida do obsługi Gradle w wersji 3.6, aby wiedzieć, kiedy AGP będzie obsługiwać kopiowanie danych. - Naprawiono niewykrywaną częstotliwość zegara w pliku JSON, aby prawidłowo wyświetlać
-1(b/141945670).
Wersja 1.0.0-alpha06
18 września 2019 r.
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ą udostępnione. Wersja 1.0.0-alpha06 zawiera te zmiany.
Nowe funkcje
- Dodano sprawdzanie nieprawidłowego użycia starego pakietu do narzędzia do uruchamiania testów, które teraz wyświetla bardziej pomocny komunikat o błędzie.
Zmiany w interfejsie API
- Adnotacja eksperymentalna
ExperimentalAnnotationReportjest teraz prawidłowo oznaczona jako publiczna. Korzystanie z eksperymentalnego interfejsu BenchmarkState#report API wymaga teraz tej adnotacji.
Wersja 1.0.0-alpha05
5 września 2019 r.
Wersje 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 zostały opublikowane. Zatwierdzenia zawarte w tej wersji znajdziesz tutaj.
Zmiany w interfejsie API
- Interfejs API
BenchmarkState.reportDatajest teraz oznaczony jako eksperymentalny
Poprawki błędów
- Poprawka skryptu blokującego zegar, który nie działał na urządzeniach bez narzędzi powłoki
cutlubexpr. - Rozwiązaliśmy problem z zadaniem
./gradlew lockClocks, które zawieszało się na urządzeniach z dostępem do roota, na których była zainstalowana starsza wersja narzędzia su, która nie obsługiwała flagi-c.
Wersja 1.0.0-alpha04
7 sierpnia 2019 r.
Wersje 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 zostały opublikowane. Zatwierdzenia uwzględnione w tej wersji znajdziesz tutaj.
Dodaliśmy 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 podczas uruchamiania w CI. Więcej informacji znajdziesz w artykułach Tworzenie testów porównawczych bez Gradle i Uruchamianie testów porównawczych w trybie ciągłej integracji.
Nowe funkcje
- Wtyczka Gradle
- Teraz automatycznie wyłącza pokrycie testowe i domyślnie ustawia
AndroidBenchmarkRunner(b/138374050). - Dodano obsługę nowego kopiowania danych opartego na AGP podczas przeprowadzania testów porównawczych i korzystania z AGP w wersji 3.6 lub nowszej.
- Teraz automatycznie wyłącza pokrycie testowe i domyślnie ustawia
- Dodatki do formatu JSON
- Wyświetlanie łącznego czasu testu porównawczego (b/133147694)
- Testy porównawcze
@Parameterized, 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 dla każdego testu porównawczego w danych wyjściowych JSON (b/132578772).
- Tryb próbny (b/138785848)
- Dodano tryb „próbny”, w którym każda pętla testu porównawczego jest uruchamiana 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łu, dzieląc bibliotekę (b/138451391).
benchmark:benchmark-junit4zawiera klasy z zależnością JUnit:AndroidBenchmarkRunneriBenchmarkRule, które zostały przeniesione do pakietuandroidx.benchmark.junit4benchmark:benchmark-commonzawiera pozostałą logikę, w tym interfejs BenchmarkState API.- Ten podział umożliwi w przyszłości obsługę testów porównawczych bez interfejsów API JUnit4.
- Ostrzeżenia dotyczące konfiguracji są teraz traktowane jako błędy i powodują przerwanie testu (b/137653596).
- Ma to na celu zachęcanie do dokładniejszych pomiarów, zwłaszcza w przypadku CI.
- Te błędy można przekształcić z powrotem w ostrzeżenia za pomocą argumentu instrumentacji. Na przykład:
-e androidx.benchmark.suppressErrors "DEBUGGABLE,LOW_BATTERY"
Poprawki błędów
- Błędy podczas zapisywania danych w pamięci zewnętrznej na urządzeniach z Androidem Q zawierają bardziej opisowe komunikaty z sugestiami, jak rozwiązać problem.
- Ekrany są automatycznie włączane podczas testów porównawczych, zamiast kończyć się niepowodzeniem, gdy ekran jest wyłączony
Wkład zewnętrzny
- Dziękujemy Sergeyowi Zakharovowi za ulepszenia danych wyjściowych JSON i rozwiązanie problemów z wyłączonym ekranem.
Wersja 1.0.0-alpha03
2 lipca 2019 r.
Publikacja androidx.benchmark:benchmark:1.0.0-alpha03 i androidx.benchmark:benchmark-gradle-plugin:1.0.0-alpha03 Zatwierdzenia uwzględnione w tej wersji znajdziesz tutaj.
Nowe funkcje
- Udostępnianie czasu trwania snu z powodu ograniczenia termicznego w przypadku każdego testu porównawczego w pełnym raporcie JSON
Poprawki błędów
- Wtyczka Gradle nie powinna już być wymagana po wtyczkach Androida i bloku Androida.
- Dodano obsługę raportów porównawczych na urządzeniach z Androidem 10 korzystających z ograniczonego dostępu do miejsca na dane
Wersja 1.0.0-alpha02
6 czerwca 2019 r.
androidx.benchmark:1.0.0-alpha02 i androidx.benchmark:benchmark-gradle-plugin:1.0.0-alpha02 są publikowane. Zatwierdzenia uwzględnione w tej wersji znajdziesz tutaj.
Pamiętaj, że traktujemy schemat JSON jako interfejs API. Planujemy stosować te same ograniczenia stabilności co w przypadku innych interfejsów API: stabilne (z bardzo rzadkimi wyjątkami) po przejściu do wersji beta i naprawione w wersji ostatecznej, z dodatkami tylko w wersjach podrzędnych oraz zmianami i usunięciami w wersjach głównych.
Zmiany w interfejsie API
Przebudowany schemat JSON. Dalsze zmiany w schemacie JSON będą prawdopodobnie ograniczone do dodawania:
- Zmieniliśmy strukturę obiektu wyniku, aby w przyszłości obsługiwać dodatkowe grupy danych (b/132713021).
- Dodano informacje kontekstowe o testowym uruchomieniu, takie jak informacje o urządzeniu i kompilacji oraz to, czy zegary są zablokowane, do obiektu najwyższego poziomu (b/132711920).
- Nazwy danych dotyczących czasu zawierają teraz „ns” (b/132714527).
- Dodano dodatkowe statystyki dla każdego raportowanego rodzaju danych (maksymalne, mediana, minimalne) i usunięto uproszczone statystyki podsumowujące „nanos” (b/132713851).
Usunięto dane wyjściowe XML (b/132714414).
Z interfejsu API
BenchmarkState.reportDatausunięto wykrywanie dławienia termicznego (b/132887006)
Poprawki błędów
- Rozwiązano problem z nieprawidłowym działaniem funkcji
./gradlew lockClocksna niektórych urządzeniach z najnowszymi wersjami systemu operacyjnego (b/133424037). - Wykrywanie ograniczania na emulatorze zostało wyłączone (b/132880807)
Wersja 1.0.0-alpha01
7 maja 2019 r.
Publikacja androidx.benchmark:benchmark:1.0.0-alpha01 Zatwierdzenia uwzględnione w tej wersji są dostępne tutaj.