Benchmark
Aggiornamento più recente | Release stabile | Candidato per la release | Versione beta | Release alpha |
---|---|---|---|---|
20 marzo 2024 | 1.2.3 | - | - | 1.3.0-alpha02 |
Dichiarazione delle dipendenze
Per aggiungere una dipendenza a Benchmark, devi aggiungere il Repository Maven di Google al tuo progetto. Per ulteriori informazioni, consulta il Repository Maven di Google.
Macrobenchmark
Per utilizzare Macrobenchmark nel tuo progetto, aggiungi le seguenti dipendenze al file build.gradle
per il modulo macrobenchmark:
Trendy
dependencies { androidTestImplementation "androidx.benchmark:benchmark-macro-junit4:1.2.3" }
Kotlin
dependencies { androidTestImplementation("androidx.benchmark:benchmark-macro-junit4:1.2.3") }
Microbenchmark
Per utilizzare Microbenchmark nel progetto, aggiungi le seguenti dipendenze al file build.gradle
per il modulo microbenchmark:
Trendy
dependencies { androidTestImplementation "androidx.benchmark:benchmark-junit4:1.2.3" } android { ... defaultConfig { ... testInstrumentationRunner "androidx.benchmark.junit4.AndroidBenchmarkRunner" } }
Kotlin
dependencies { androidTestImplementation("androidx.benchmark:benchmark-junit4:1.2.3") } android { ... defaultConfig { ... testInstrumentationRunner = "androidx.benchmark.junit4.AndroidBenchmarkRunner" } }
La libreria Microbenchmark fornisce anche un plug-in Gradle da utilizzare con il modulo di microbenchmark.
Questo plug-in imposta i valori predefiniti della configurazione di compilazione per il modulo, imposta la copia di output di benchmark sull'host e fornisce l'
attività ./gradlew lockClocks
.
Per utilizzare il plug-in, includi la seguente riga nel blocco "plugins" nel file build.gradle
di primo livello:
Trendy
plugins { id 'androidx.benchmark' version '1.2.3' apply false }
Kotlin
plugins { id("androidx.benchmark") version "1.2.3" apply false }
Applica quindi il plug-in al file build.gradle
del modulo di benchmark
Trendy
plugins { id 'androidx.benchmark' }
Kotlin
plugins { id("androidx.benchmark") }
Feedback
Il tuo feedback ci aiuta a migliorare Jetpack. Facci sapere se rilevi nuovi problemi o hai idee per migliorare la libreria. Dai un'occhiata ai problemi esistenti in questa libreria prima di crearne una nuova. Puoi aggiungere il tuo voto a un problema esistente facendo clic sul pulsante a forma di stella.
Per ulteriori informazioni, consulta la documentazione di Issue Tracker.
Versione 1.3
Versione 1.3.0-alpha02
20 marzo 2024
androidx.benchmark:benchmark-*:1.3.0-alpha02
viene rilasciato. La versione 1.3.0-alpha02 contiene questi commit.
Nuove funzionalità
Supporto sperimentale di R8 in microbench tramite regole ProGuard incorporate. Tieni presente che questo supporto è sperimentale e richiede AGP 8.3 per minimizzare i test dei moduli delle librerie. Utilizza quanto segue per abilitare la minimizzazione/ottimizzazione di R8 nel
build.gradle
del modulo di benchmark, che dovrebbe portare a un aumento significativo delle prestazioni, a seconda del carico di lavoro. (I738a3, b/184378053)android { buildTypes.release.androidTest.enableMinification = true }
Correzioni di bug
- Correggere l'avviso di tracciamento dei metodi in modo che si trovi su una riga separata dall'output del microbench. (I0455c, b/328308833).
Versione 1.3.0-alpha01
21 febbraio 2024
androidx.benchmark:benchmark-*:1.3.0-alpha01
viene rilasciato. La versione 1.3.0-alpha01 contiene questi commit.
Modifiche alle API
- Parametri booleani
MicrobenchmarkConfig
rinominati per evitare la parola non necessaria "dovrebbe" (Ia8f00, b/303387299) - È stato aggiunto
BenchmarkRule.measureRepeatedOnMainThread
in modo che i benchmark dei thread principali (ad esempio quelli che toccano le UI di Visualizzazioni o Scrivi) possano evitare di attivare errori ANR, soprattutto durante suite di grandi dimensioni in CI. (I5c86d). - È stata aggiunta
FrameTimingGfxInfoMetric
, un'implementazione alternativa sperimentale diFrameTimingMetric
con misurazioni provenienti direttamente dalla piattaforma, anziché estratte dalla traccia Perfetto. (I457cb, b/322232828). - Aggiungi la possibilità di eseguire il dump di un profilo ART durante singole iterazioni
warmUp
. (I17923) - Diverse modifiche all'API
TraceSectionMetric
:- Aggiungi
Mode.Min
,Mode.Max
- Aggiungi un argomento di etichetta per sostituire il nome della sezione come etichetta della metrica
- Aggiunto il nome della modalità all'output per chiarire il significato della metrica
- Il valore predefinito è stato modificato in somma, poiché la maggior parte dell'utilizzo di questa metrica è per eventi ripetuti Tieni presente queste modifiche nell'utilizzo di CI, poiché potrebbero creare discontinuità o interrompere l'analisi. (Ic1e82, b/301892382, b/301955938).
- Aggiungi
Correzioni di bug
- Miglioramento del messaggio di errore nel plug-in Gradle del profilo di base quando non esiste un dispositivo gestito specificato (Idea2b, b/313803289)
- Correzione per l'inclusione dei profili di riferimento della libreria in AAR prima di AGP 8.3.0-alpha15 (I1d2af, b/313992099)
- URL di output del profilo di avvio e di riferimento fisso alla fine dell'attività di generazione (I802e5, b/313976958)
- Timeout dell'origine dati modificati per tentare di correggere
java.lang.IllegalStateException: Failed to stop [ProcessPid(processName=perfetto, pid=...)]
(I8dc7d, b/323601788) - Aggiungi due argomenti sulla strumentazione per eseguire l'override del comportamento di eliminazione delloshar negli arresti anomali della soluzione alternativa durante il benchmarking di app senza
ProfileInstaller
1.3:androidx.benchmark.dropShaders.enable=true/false
: può essere utilizzato per ignorare tutte le operazioni di eliminazione dello Shadr (incluso quello eseguito nei lanciStartupMode.Cold
), soprattutto quando si esegue il benchmarking per le app che non utilizzano ancora il programma di installazione del profilo 1.3androidx.benchmark.dropShaders.throwOnFailure=true/false
: può essere usato per tollerare gli errori quando si cerca di eliminare gli ombrelli, ad esempio quando si esegue il benchmarking delle app senza profilo di installazione 1.3 (I4f573)
- Salta il tracciamento del metodo nel thread dell'interfaccia utente se dovrebbe richiedere più di qualche secondo e le tracce del metodo di pulizia durante il lancio. (I6e768)
- Genera quando i nomi file sono più lunghi di 200 caratteri per evitare arresti anomali poco chiari durante la scrittura o la post-elaborazione di file. (I4a5ab).
- Risolvi il problema per cui i frame non terminati all'inizio e alla fine della traccia potevano essere accoppiati, il che veniva segnalato erroneamente come un singolo frame estremamente lungo. (I39353, b/322232828)
- Usa
--skip verification
sull'API 30 o versioni successive quando reinstalli un pacchetto sull'API 30-33 per cancellare i profili ART nelle build degli utenti. Ciò consente di bypassare gli avvisi di Play Protect che causano guasti su alcuni tipi di dispositivi. (Ic9e36). - Usa
am force-stop
per terminare le app quando non è presente un'app di sistema come UI di sistema o Avvio app. (I5e028). - Macrobenchmark ora attende che
1 second
l'applicazione di destinazione esegua lo svuotamento di un profilo ART (in precedenza aspettava500 ms
). (I85a50, b/316082056) - Migliora l'errore
FrameTimingMetric
quando non vengono prodotti frame e mostra sempre il link di output per tracciare l'errore di analisi delle metriche per facilitare la diagnosi del problema. (I956b9) - Risolto il problema di arresto anomalo in
FrameTimingMetric
che non riesce ad analizzare l'ID frame, in particolare su alcuni dispositivi OEM. (Ia24bc, b/303823815, b/306235276). - Riduci il livello di severità dei controlli in
FrameMetrics
e sono stati aggiunti ulteriori dettagli ai messaggi di errore. (Iadede)
Versione 1.2
Versione 1.2.3
24 gennaio 2024
androidx.benchmark:benchmark-*:1.2.3
viene rilasciato. La versione 1.2.3 contiene questi commit.
Correzioni di bug
- Rimossa l'eccezione dal plug-in Baseline Profile per Gradle quando la versione AGP è 8.3.0 o successiva.
- Correzione per l'inclusione dei profili di base della libreria in AAR prima di AGP 8.3.0-alpha15.
Versione 1.2.2
1° dicembre 2023
androidx.benchmark:benchmark-*:1.2.2
viene rilasciato. La versione 1.2.2 contiene questi commit.
Profili di riferimento
- I log di esecuzione mostreranno il percorso del file di output del profilo di base come URI del file locale (aosp/2843918, aosp/2853665, b/313976958)
Versione 1.2.1
15 novembre 2023
androidx.benchmark:benchmark-*:1.2.1
viene rilasciato. La versione 1.2.1 contiene questi commit.
Nuove funzionalità
- Miglioramento del messaggio di errore relativo alla disattivazione delle varianti di test da parte dell'utente (b/307478189)
- Sono state aggiunte proprietà per supportare l'integrazione dell'esecuzione dei test dell'AS (b/309805233), (b/309116324)
Versione 1.2.0
18 ottobre 2023
androidx.benchmark:benchmark-*:1.2.0
viene rilasciato. La versione 1.2.0 contiene questi commit.
Modifiche importanti dalla versione 1.1.0
Profili di riferimento
- Il nuovo plug-in per Gradle profilo base automatizza l'acquisizione e l'inclusione dei profili di base nel flusso di lavoro di test e creazione.
BaselineProfileRule.collect
ora stabile, una versione semplificata e semplificata della precedente APIBaselineProfileRule.collectBaselineProfile
sperimentale- Devi solo specificare
packageName
e gestire la tua app
- Devi solo specificare
- Per le librerie che generano profili di base, ora puoi filtrare le regole generate nel codice (argomento
BaselineProfileRule.collect
) o anche più semplicemente nel plug-in Gradle - Correzioni
- Raccolta di profili di riferimento corretta su Android U e versioni successive (Id1392, b/277645214)
Macrobenchmark
- Compilation
- Macrobenchmark ora ripristina correttamente lo stato della compilazione per ogni compilazione. Ciò richiede la reinstallazione dell'APK prima di Android 14, quindi è vivamente consigliato eseguire il benchmarking su Android 14 e versioni successive se vuoi mantenere lo stato (ad esempio l'accesso utente) nei dati che vengono misurati.
- Puoi anche risolvere questo problema controllando separatamente la compilazione dell'app e saltandola con
CompilationMode.Ignore()
o con l'argomento di strumentazione.
Argomenti di strumentazione
- Supporto dell'argomento di strumentazione
androidx.benchmark.dryRunMode.enable
(già disponibile nel microbenchmark) per esecuzioni di convalida più rapide (ad es. durante la creazione del benchmark o in fase di pre-invio) - Supporto per
androidx.benchmark.profiling.mode=StackSampling
eMethodTracing
. - È stato aggiunto
androidx.benchmark.enabledRules
per consentire il profilo di riferimento del filtro di runtime rispetto ai test delle regole macrobenchmark - Aggiunto l'argomento
androidx.benchmark.perfettoSdkTracing.enable
per attivare il tracciamento con tracing-perfetto, ad esempio il tracciamento della ricomposizione di Compose. Tieni presente che, se utilizzato conStartupMode.COLD
, la sincronizzazione influirà in modo significativo poiché la libreria di tracciamento viene caricata e attivata durante l'avvio dell'app.
- Supporto dell'argomento di strumentazione
Requisiti
- Macrobenchmark ora richiede
ProfileInstaller
1.3.0 o versioni successive nell'app di destinazione, per attivare l'acquisizione / reimpostazione del profilo e lo svuotamento della cache dello smoothr.
- Macrobenchmark ora richiede
Nuove API delle metriche sperimentali
- È stata aggiunta l'opzione sperimentale
TraceSectionMetric
, che consente di estrarre tempi semplici dai blocchitrace("") {}
nella tua app, oppure TraceMetric per sfruttare tutte le funzionalità di query di PerfettoTraceProcessor
. - È stata aggiunta l'esperienza sperimentale
PowerMetric
per acquisire informazioni sull'utilizzo avanzato - Aggiunta dell'esperimento sperimentale
MemoryCountersMetric
per conteggiare gli errori di pagina - È stata aggiunta l'API sperimentale
PerfettoTraceProcessor
, utilizzata internamente per estrarre metriche dalle tracce di sistema (ovvero le tracce Perfetto)
- È stata aggiunta l'opzione sperimentale
Correzioni
- Sono stati corretti gli arresti anomali durante l'installazione o l'estrazione di profili da un'app installata da più APK (ad esempio da app bundle).
- Risolto il problema di
FrameTimingMetric
ignorando i frame con ID frame incoerenti (di solito, frame durante gli echi sull'API 31 e versioni successive) (I747d2, b/279088460) - Correzione degli errori di analisi su tracce superiori a 64 MB (Ief831, b/269949822)
- Sono stati chiariti gli errori quando l'immagine del sistema operativo del dispositivo (in particolare l'emulatore) non è configurata correttamente per il tracciamento o la compilazione
- Salta il controllo del livello della batteria per i dispositivi senza batteria (micro e macro)
- Output file migliorato, con errori più evidenti per directory di output non valide e valori predefiniti più sicuri
- È stata migliorata la stabilità di
StartupMode.COLD
, perché è stata eliminata in modo coerente la cache dello strumento di identificazione (esposta anche tramiteMacrobenchmarkScope.dropShaderCache
) - Correzione di riserva Leanback per
startActivityAndWait
.
Microbenchmark
- Funzionalità
- La profilazione è stata spostata in una fase separata, dopo altre metriche, in modo che un'esecuzione di test possa mostrare tempistiche precise e risultati della profilazione.
- API sperimentali
- È stata aggiunta l'API sperimentale
MicrobenchmarkConfig
per definire le metriche personalizzate e configurare il tracciamento e la profilazione. Può essere utilizzato per acquisire tracce del metodo o per acquisire i punti di traccia (ma fai attenzione al tracciamento dell'overhead). - Aggiunta di API sperimentali per controllare
BenchmarkState
separatamente daBenchmarkRule
, senza JUnit - È stato aggiunto il record sperimentale
PerfettoTrace
per consentire l'acquisizione di tracce Perfetto, con configurazione personalizzata, separata dalle API di benchmark.
- È stata aggiunta l'API sperimentale
- Correzioni
- Nella soluzione alternativa mancano spazi vuoti principali nell'output del benchmark di Android Studio.
- Risolvi il problema per cui gli avvisi non venivano stampati nell'output del benchmark di Android Studio.
- È stato risolto l'arresto anomalo di
SampledProfiling
su Android 13 (API 33) e versioni successive. - Prestazioni di
dryRunMode
notevolmente migliorate saltando il tracciamento diIsolationActivity
e Perfetto (modalità di prova fino a 10 volte più veloce sulle versioni precedenti del sistema operativo).
Versione 1.2.0-rc02
6 ottobre 2023
androidx.benchmark:benchmark-*:1.2.0-rc02
viene rilasciato. La versione 1.2.0-rc02 contiene questi commit.
Correzioni di bug
- Correggi l'output del file di benchmark per non interrompere più la copia dei file del plug-in di
BaselineProfile
. I file sono stati generati e copiati dal dispositivo, ma sono stati rinominati in modo tale che il plug-in Gradle non li vedeva. (I8dbcc, b/303034735, b/296453339). - Sono stati chiariti i messaggi di errore relativi al caricamento di
tracing-perfetto
durante l'inserimento dal modulo macrobenchmark nell'applicazione di destinazione.
Versione 1.2.0-rc01
20 settembre 2023
androidx.benchmark:benchmark-*:1.2.0-rc01
viene rilasciato. La versione 1.2.0-rc01 contiene questi commit.
Correzioni di bug
- Ora viene generata un'eccezione (con istruzioni di rimedio) quando il tracciamento dell'SDK Perfetto non viene inizializzato in un benchmark. (I6c878, b/286228781)
- È stato risolto l'arresto anomalo OOM durante la conversione della traccia del metodo ART -> formato perfetto. (I106bd, b/296905344)
- (Macrobenchmark) È stata chiarita l'etichetta di tracciamento del metodo quando è stato effettuato il collegamento nell'output di test di Studio e il metodo fisso che traccia i nomi dei file in modo che siano univoci sul dispositivo/host, in modo che non vengano sovrascritti quando viene eseguito più di un benchmark. (I08e65, b/285912360).
- Garantisce che il dispositivo sia attivo quando acquisisci un profilo di riferimento. (I503fc)
Versione 1.2.0-beta05
30 agosto 2023
androidx.benchmark:benchmark-*:1.2.0-beta05
viene rilasciato. La versione 1.2.0-beta05 contiene questi commit.
Nuove funzionalità
- Il plug-in Baseline Profile per Gradle ora supporta il plug-in Android Gradle 8.3. (aosp/2715214)
Versione 1.2.0-beta04
23 agosto 2023
androidx.benchmark:benchmark-*:1.2.0-beta04
viene rilasciato. La versione 1.2.0-beta04 contiene questi commit.
Nuove funzionalità
- Il plug-in per Gradle Baseline Profiles ora supporta il plug-in Android Gradle 8.3. (aosp/2715214)
Correzioni di bug
- Correggi gli errori di scrittura, spostamento e pull dei file (in particolare quelli dei test con parametri) sanitizzando ulteriormente i nomi dei file di output, evitando i simboli "=" e ":" nei nomi di output. (I759d8)
Versione 1.2.0-beta03
9 agosto 2023
androidx.benchmark:benchmark-*:1.2.0-beta03
viene rilasciato. La versione 1.2.0-beta03 contiene questi commit.
Modifiche alle API
- Aggiunto argomento per filtrare
TraceSectionMetric
in modo da visualizzare solo il pacchetto di destinazione, attivo per impostazione predefinita (Ia219b, b/292208786)
Correzioni di bug
- Argomento di strumentazione
fullTracing.enable
rinominato inperfettoSdkTracing.enable
per la coerenza con il nome dell'artefatto e altri riferimenti.fullTracing.enable
continuerà a funzionare come riserva. (I7cc00) - Ora i punti di traccia interni della libreria di benchmark (incluso il tracciamento del ciclo/fase del microbenchmark) verranno visualizzati nel visualizzatore delle tracce del sistema di Studio e verranno nidificati in Perfetto secondo la procedura corretta. (I6b2e7, b/293510459).
- È stato rimosso l'errore NOT-PROFILEABLE del macrobenchmark sull'API 31+ e ignora il controllo profilabile sui dispositivi rooted eng/userdebug. (I2abac, b/291722507).
- Quando si utilizzano le ottimizzazioni del layout di Dex, anche le regole del profilo di avvio sono considerate come regole di base del profilo. (aosp/2684246, b/293889189)
Versione 1.2.0-beta02
26 luglio 2023
androidx.benchmark:benchmark-*:1.2.0-beta02
viene rilasciato. La versione 1.2.0-beta02 contiene questi commit.
Modifiche alle API
- Sono state aggiunte API sperimentali per metriche e configurazione personalizzate di microbench (ad es. profiler e tracciamento). (I86101, b/291820856)
Correzioni di bug
- Segnala errore in macrobench quando il sistema operativo è configurato in modo errato per il tracciamento, come è stato recentemente corretto negli emulatori ARM64 dell'API 26/28. (I0a328, b/282191686).
- Sono stati aggiunti dettagli all'errore di reimpostazione della compilazione per suggerire l'aggiornamento dell'emulatore, poiché alcuni emulatori hanno risolto di recente il problema. (I8c815, b/282191686).
- Imposta
androidx.test.uiautomator:uiautomator:2.2.0
come dipendenzaapi
anzichéimplementation
. (I1981e).
Versione 1.2.0-beta01
18 luglio 2023
androidx.benchmark:benchmark-*:1.2.0-beta01
viene rilasciato. La versione 1.2.0-beta01 contiene questi commit.
Correzioni di bug
- Sono stati corretti gli avvisi che a volte venivano soppressi nell'output Benchmark in Studio e gli spazi vuoti iniziali dell'output del benchmark non venivano visualizzati in Studio (Ia61d0, b/227205461, b/286306579, b/285912360)
- Commento corretto per
FrameTimingMetric
. Il nome della sottometrica èframeDurationCpuMs
. (Ib097f, b/288830934).
Versione 1.2.0-alpha16
21 giu 2023
androidx.benchmark:benchmark-*:1.2.0-alpha16
viene rilasciato. La versione 1.2.0-alpha16 contiene questi commit.
Modifiche alle API
- L'API
BaselineProfileRule.collectBaselineProfile()
è stata rinominata inBaselineProfileRule.collect()
. (I4b665)
Correzioni di bug
- Supporto di Macrobenchmark per
androidx.benchmark.profiling.mode = MethodTracing
. (I7ad37, b/285912360). - La profilazione del microbenchmark è passata a una fase separata, quindi avviene in sequenza dopo la misurazione, anziché sostituirla. Le sezioni della traccia
MethodTracing
sono ora incluse nella traccia Perfetto acquisita, se presente. (I9f657, b/285014599) - Aggiungi la misurazione del conteggio a
TraceSectionMetric
conMode.Sum
. (Ic121a, b/264398606).
Versione 1.2.0-alpha15
7 giugno 2023
androidx.benchmark:benchmark-*:1.2.0-alpha15
viene rilasciato. La versione 1.2.0-alpha15 contiene questi commit.
Nuove funzionalità
- Aggiunta l'esperimento
MemoryUsageMetric
sperimentale per monitorare l'utilizzo della memoria di un'applicazione di destinazione. (I56453, b/133147125, b/281749311) - Aggiungi il supporto per configurazioni Perfetto completamente personalizzate con
PerfettoTrace.record
(If9d75, b/280460183) - Proprietà aggiunta per saltare la generazione del profilo di riferimento. Utilizzo:
./gradlew assemble -Pandroidx.baselineprofile.skipgeneration
. (I37fda, b/283447020).
Modifiche alle API
- L'API
collectBaselineProfile
genera sempre profili di riferimento stabili. L'APIcollectStableBaselineProfile
è stata rimossa e sarà necessario usarecollectBaselineProfile
. (I17262, b/281078707) - L'argomento
filterPredicate
diBaselineProfileRule
è stato modificato in non null, con un valore predefinito equivalente, in modo che il comportamento predefinito del filtro sia più chiaro nella documentazione. (I3816e)
Correzioni di bug
- Disattiva il tracciamento
IsolationActivity
e Perfetto indryRunMode
per migliorare notevolmente le prestazioni, poiché erano la maggior parte del runtime. (Ie4f7d) - Supporto per il campionamento dello stack di chiamate in Macrobenchmark utilizzando gli argomenti del test di strumentazione
androidx.benchmark.profiling.mode=StackSampling
eandroidx.benchmark.profiling.sampleFrequency
. (I1d13b, b/282188489). - È stato corretto l'arresto anomalo durante l'eliminazione degli wiper su Android U (API 34) e sugli emulatori. (I031ca, b/274314544).
Versione 1.2.0-alpha14
3 maggio 2023
androidx.benchmark:benchmark-*:1.2.0-alpha14
viene rilasciato. La versione 1.2.0-alpha14 contiene questi commit.
Correzioni di bug
- È stato risolto il problema
FrameTimingMetric
ignorando i frame con ID frame incoerenti. Di conseguenza, alcune animazioni sulle recenti versioni della piattaforma (API 31 e versioni successive) ignorano molti frame durante l'animazione diRenderThread
, ad esempio durante un'eco. (I747d2, b/279088460) - Correzione dell'analisi del processore di traccia per tracce superiori a 64 MB. (Ief831, b/269949822)
- È stata corretta la generazione del profilo di riferimento su Android U che non funzionava a causa del diverso output del comando
pm dump-profiles
. (Id1392, b/277645214) - Correggere lo script di blocco del clock della GPU per confrontare correttamente le stringhe (I53e54, b/213935715)
Versione 1.2.0-alpha13
5 aprile 2023
androidx.benchmark:benchmark-*:1.2.0-alpha13
viene rilasciato. La versione 1.2.0-alpha13 contiene questi commit.
Modifiche alle API
- Parametro del tipo di profilo aggiunto durante la generazione di profili di riferimento per supportare la funzionalità del profilo di avvio imminente (Ie20d7, b/275093123)
- È stata aggiunta la nuova API sperimentale
TraceMetric
per definire metriche completamente personalizzate in base al contenuto di una traccia Perfetto. (I4ce31, b/219851406). - Aggiungi una metrica sperimentale per determinare il numero di errori di pagina durante un benchmark. (I48db0)
Versione 1.2.0-alpha12
22 marzo 2023
androidx.benchmark:benchmark-*:1.2.0-alpha12
viene rilasciato. La versione 1.2.0-alpha12 contiene questi commit.
Nuove funzionalità
- Il nuovo plug-in Gradle del profilo di base viene rilasciato in versione alpha, semplificando la generazione di un profilo di base e semplificando il flusso di lavoro degli sviluppatori.
Modifiche alle API
- È stato rimosso il supporto del tracciamento Perfetto nelle API 21 e 22, che include sia i microbenchmark sia le API sperimentali
PerfettoTrace
. Prima di questa versione, le connessioniUiAutomation
erano inaffidabili su alcuni dispositivi. (I78e8c). - È stata aggiunta l'API pubblica sperimentale per
PerfettoTraceProcessor
per abilitare l'analisi dei contenuti della traccia. Questo è un passaggio verso metriche completamente personalizzate basate sui dati di traccia Perfetto. (I2659e, b/219851406).
Versione 1.2.0-alpha11
8 marzo 2023
androidx.benchmark:benchmark-*:1.2.0-alpha11
viene rilasciato. La versione 1.2.0-alpha11 contiene questi commit.
Correzioni di bug
- Sono stati corretti gli arresti anomali in
MacrobenchmarkRule
eBaselineProfileRule
durante la reinstallazione o l'estrazione di profili da un app bundle con più APK. (I0d8c8, b/270587281).
Versione 1.2.0-alpha10
22 febbraio 2023
androidx.benchmark:benchmark-*:1.2.0-alpha10
viene rilasciato. La versione 1.2.0-alpha10 contiene questi commit.
Nuove funzionalità
- Su Android 14 e versioni successive, Macrobenchmark non reinstalla più le applicazioni di destinazione per reimpostare lo stato di compilazione, grazie a una nuova funzionalità della piattaforma. In precedenza era necessario disporre di un dispositivo rooted o gestire la rimozione di tutto lo stato dell'applicazione (ad es. l'accesso utente) prima dell'esecuzione di ogni benchmark. (I9b08c, b/249143766).
Correzioni di bug
- Correggi
DryRunMode
per evitare più l'arresto anomalo con un profilo vuoto a causa della mancanza di compilazione. Al contrario, esegue una singola iterazione ed estrae il profilo per garantire che l'elemento venga acquisito. (I2f05d, b/266403227). - Correggi l'arresto anomalo di
PowerMetric
durante il controllo della presenza di powerstats sui livelli API precedenti. (5faaf9, b/268253898)
Versione 1.2.0-alpha09
11 gennaio 2023
androidx.benchmark:benchmark-*:1.2.0-alpha09
viene rilasciato. La versione 1.2.0-alpha09 contiene questi commit.
Correzioni di bug
- Attivazione del passaggio di
None
all'argomento della strumentazioneandroidx.benchmark.enabledRules
per disabilitare tutti i benchmark / generazione del profilo di riferimento. (I3d7fd, b/258671856) - Correggi
PerfettoTrace
acquisizione in moduli dell'app (ad esempio APK di test non auto-strumentali) (I12cfc) - Ordine degli argomenti pull adb del profilo di riferimento corretto nell'output di Studio (I958d1, b/261781624)
- L'API ARM emulatore 33 viene ora correttamente riconosciuta come tale quando si cerca di eseguire un macrobenchmark e si stamperà correttamente l'avviso. (69133b,b/262209591)
- Salta il controllo del livello della batteria sui dispositivi senza batteria in Macrobenchmark (fe4114, b/232448937)
Versione 1.2.0-alpha08
7 dicembre 2022
androidx.benchmark:benchmark-*:1.2.0-alpha08
viene rilasciato. La versione 1.2.0-alpha08 contiene questi commit.
Modifiche alle API
- Sono state aggiunte le nuove API sperimentali
PerfettoTrace.record {}
ePerfettoTraceRule
per acquisire le tracce Perfetto (note anche come tracce di sistema) nell'ambito di un test, al fine di ispezionare il comportamento e le prestazioni del test. (I3ba16) BaselineProfileRule
ora accetta un predicato di filtro anziché un elenco di prefissi di pacchetto. In questo modo, il test ha il pieno controllo dei filtri. (I93240)- Aggiungi un'API sperimentale
BaselineProfileRule.collectStableBaselineProfile
che attende fino a quando un profilo di riferimento è stabile per N iterazioni. (I923f3) - Aggiungi la possibilità di specificare un prefisso del nome file di output quando generi profili di riferimento utilizzando
BaselineProfileRule
. (I7b59f, b/260318655).
Correzioni di bug
- Migliora la sicurezza della scrittura dell'output dei file, che dovrebbe impedire che i file di output vengano scritti / aggiunti automaticamente, soprattutto nell'API 21/22. (If8c44, b/227510293)
- Correggi l'output della traccia
simpleperf
per creare e posizionare il file correttamente. In genere questo dovrebbe anche risolvere i problemi in cui Gradle non ha eseguito correttamente il pull di un file. (I12a1c, b/259424099). - Messaggio di errore Migliora programma di installazione visualizzato quando il programma di installazione del profilo è troppo vecchio. Questo ora indica di aggiornare la versione del programma di installazione del profilo (1.2.1) per la misurazione dei profili di riferimento sulle API dalla 31 alla 33, invece di dire che non è supportata. (Ia517f, b/253519888).
- Correggi diversi errori dei comandi della shell nel messaggio di errore Stampa API necessaria <=23, inclusi errori di acquisizione binaria perfetto e errori di acquisizione delle tracce (Ib6b87, b/258863685)
- Ordina automaticamente le regole del profilo generate per ridurre al minimo il numero di modifiche man mano che cambiano nel tempo (quando esegui il check-in delle regole del profilo nel controllo del codice sorgente). (Ie2509)
- È stato corretto l'arresto anomalo sulle build non rooted precedenti ad Android 13 (API 33) con il messaggio
Expected no stderr from echo 3 > /proc/sys/vm/drop_caches
(I6c245, b/259508183)
Problemi noti
- MacrobenchmarkScope.dropShaderCache()
potrebbe arrestarsi in modo anomalo a causa di un registro di broadcast mancante nel file manifest del programma di installazione del profilo, che non è ancora stato rilasciato. (I5c728, b/258619948) Per risolvere il problema in profileinstaller:1.3.0-alpha02
, aggiungi quanto segue al file AndroidManifest.xml dell'applicazione (non del tuo benchmark):
<!-- 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>
Versione 1.2.0-alpha07
9 novembre 2022
androidx.benchmark:benchmark-*:1.2.0-alpha07
viene rilasciato. La versione 1.2.0-alpha07 contiene questi commit.
Modifiche alle API
- Aggiunge l'API
PowerMetric
per la misurazione di energia e potenza in Macrobenchmarks. (Ife601, b/220183779) - È stato corretto
MacrobenchmarkScope.dropShaderCache()
in modo da eliminare effettivamente la cache dello strumento di analisi. In questo modo vengono rimossi circa 20 ms di rumore dai benchmark diStartupMode.COLD
, dato che gli Shader vengono ora regolarmente cancellati a ogni iterazione. In precedenza, la compilazione diPartial
mediante iterazioni a caldo segnalava numeri errati e rapidi, poiché era più probabile che si verificasse la memorizzazione nella cache dello Shader durante il riscaldamento. Questa correzione richiede un dispositivo rooted o l'utilizzo diprofileinstaller:1.3.0-alpha02
nell'app di destinazione. Per le modifiche all'API della libreriaProfileInstaller
, fai riferimento alla pagina ProfileInstaller 1.30-alpha02. (Ia5171, b/231455742) - È stato aggiunto
TraceSectionMode("label", Mode.Sum)
, che consente la misurazione del tempo totale trascorso su più sezioni di traccia con la stessa etichetta. Ad esempio,TraceSectionMetric("inflate", Mode.Sum)
riporterà una metricainflateMs
per il tempo totale trascorso in un macrobenchmark sull'inflazione. È stato inoltre rimosso il requisito dell'API 29, poichéTraceSectionMetric
funziona insieme aandroidx.tracing.Trace
per tornare ai livelli API inferiori, con l'utilizzo diforceEnableAppTracing
all'interno dell'app target. (Id7b68, b/231455742)
Correzioni di bug
- È stata migliorata la sicurezza di tutti i comandi della shell interna mediante la convalida di tutti gli output/errori. (I5984d, b/255402908, b/253094958).
- Specifica il dispositivo nel comando
adb pull
del profilo di riferimento, in modo che il comando pull possa essere semplicemente copiato se sono connessi più dispositivi (fino a un emulatore) (I6ac6c, b/223359380) - Aggiungi errore se l'APK di test macrobenchmark non è configurato come auto-strumentazione. Questo errore impedisce il macrobenchmarking dall'interno del processo dell'app di destinazione. Nel corso del processo, Macrobench non sarebbe in grado di compilare/kill/avviare a freddo l'app o controllare le proprie autorizzazioni (I4279b)
- Risolto il problema in
measureRepeated()
per cuiStartupMode.COLD
non interrompeva il processo target dopo il giornosetupBlock
. Ora l'interazione disetupBlock
con l'app non lascia il processo dell'app in esecuzione e la misurazione dell'avvio a freddo non è valida. (I8ebb7).
Versione 1.2.0-alpha06
24 ottobre 2022
androidx.benchmark:benchmark-*:1.2.0-alpha06
viene rilasciato. La versione 1.2.0-alpha06 contiene questi commit.
Modifiche alle API
BaselineProfileRule
non richiede più il root su Android 13 (API 33) e non è più sperimentale. (Ie0a7d, b/250083467, b/253094958)- Questa modifica corregge anche il modo in cui i profili di un'app vengono scaricati sul disco nei dispositivi non rooted, ma richiede l'aggiornamento della dipendenza del programma di installazione del profilo dell'app di destinazione.
- Per utilizzare
BaselineProfileRule
oCompilationMode.Partial(warmupIterations)
su un dispositivo non rooted, devi anche aggiornare l'app di destinazione in modo che utilizziandroidx.profileinstaller.profileinstaller:1.3.0-alpha01
. Ciò consente lo svuotamento corretto del profilo su disco, in modo che possa essere compilato/estratto.
Correzioni di bug
- Corregge l'arresto anomalo di
SampledProfiling
sull'API 33 o versioni successive (I40743, b/236109374).
Versione 1.2.0-alpha05
5 ottobre 2022
androidx.benchmark:benchmark-*:1.2.0-alpha05
viene rilasciato. La versione 1.2.0-alpha05 contiene questi commit.
Correzioni di bug
- Correggi la suddivisione dei frame nel visualizzatore delle tracce di sistema di Studio per le tracce acquisite tramite benchmark (I3f3ae, b/239677443)
- Correggi
FrameTimingMetric
per indicare cheFrameOverrun
richiede l'API 31 anziché 29 (I716dd, b/220702554) - Imposta l'iterazione in
BaselineProfileRule
e genera chiaramente se il pacchetto di destinazione non è installato (è già stata eseguita per MacrobenchmarkRule). (Ic09a3, b/227991471).
Versione 1.2.0-alpha04
21 settembre 2022
androidx.benchmark:benchmark-*:1.2.0-alpha04
viene rilasciato. La versione 1.2.0-alpha04 contiene questi commit.
Nuove funzionalità
Aggiungi il supporto dell'argomento di strumentazione
dryRunMode.enable
al macrobenchmark (già disponibile in micro) per velocizzare lo sviluppo locale e la convalida dell'automazione delle app (ad esempio, in fase di pre-invio). Questa operazione sostituisce le iterazioni con 1, ignora la compilazione, elimina tutti gli errori di configurazione e disattiva l'output del file .json di misurazione. (Ib51b4, b/175149857).Nella riga di comando di Gradle:
./gradlew macrobenchmark:cC -P android.testInstrumentationRunnerArguments.androidx.benchmark.dryRunMode.enable=true
In build.gradle:
android { defaultConfig { testInstrumentationRunnerArgument 'androidx.benchmark.dryRunMode.enable', 'true' } }
Correzioni di bug
- È stato risolto il problema
StartupTimingMetric
per non richiedere più l'avvio delle attività misurate tramiteMacrobenchmarkScope.startActivityAndWait()
. Ciò significa che la metrica può rilevare i lanci, ad esempio da notifiche,Context.startActivity()
, navigazione basata sull'attività in-app o comandi shell. (Ia2de6, b/245414235). - Correggi il bug per cui
startActivityAndWait
tentava di attendere il completamento dell'avvio sugli emulatori per ridurre il livello di severità del rilevamento dei fotogrammi. (Ibe2c6, b/244594339, b/228946895).
Versione 1.2.0-alpha03
7 settembre 2022
androidx.benchmark:benchmark-*:1.2.0-alpha03
viene rilasciato. La versione 1.2.0-alpha03 contiene questi commit.
Nuove funzionalità
- Sono state aggiunte API sperimentali per l'utilizzo indipendente di
BenchmarkState
, separate daBenchmarkRule
/JUnit4
. (Id478f, b/228489614)
Correzioni di bug
- Aggiunto il riserva Leanback per
startActivityAndWait
. (01ed77, b/242899915)
Versione 1.2.0-alpha02
24 agosto 2022
androidx.benchmark:benchmark-*:1.2.0-alpha02
viene rilasciato. La versione 1.2.0-alpha02 contiene questi commit.
Modifiche alle API
- Il valore predefinito è
am force stop
perMacrobenchmarkScope.killProcess()
, anche se rooted, tranne durante la generazione del profilo di riferimento. Può essere sostituito con un argomento booleano facoltativo. (02cce9, b/241214097).
Correzioni di bug
- Supporta la generazione del profilo di riferimento per le app di sistema. (I900b8, b/241214097)
- Supporta la verifica delle metriche di potenza ODPM sui dispositivi non rooted. (a38c78, b/229623230)
Versione 1.2.0-alpha01
27 luglio 2022
androidx.benchmark:benchmark-*:1.2.0-alpha01
viene rilasciato. La versione 1.2.0-alpha01 contiene questi commit.
Nuove funzionalità
- Nuovo componente tracing-perfetto-common che consente di utilizzare strumenti per consentire il tracciamento di Perfetto SDK in un'app che lo espone (I2cc7f)
Aggiunto l'argomento di strumentazione
androidx.benchmark.enabledRules
per abilitare le esecuzioni del macrobenchmark di filtro solo ai benchmark o alla generazione del profilo di riferimento. Utilizza "Macrobenchmark" o "BaselineProfile" per eseguire un solo tipo di test, ad esempio quando generi soltantoBaselineProfiles
su un emulatore. È supportato anche l'elenco separato da virgole. (I756b7, b/230371561)Ad esempio, nel file build.gradle del tuo macrobenchmark:
android { defaultConfig { testInstrumentationRunnerArgument 'androidx.benchmark.enabledRules', 'BaselineProfile' } }
In alternativa, dalla riga di comando di Gradle:
./gradlew macrobenchmark:cC -P android.testInstrumentationRunnerArguments.androidx.benchmark.enabledRules=BaselineProfile
Modifiche alle API
- È stato aggiunto un nuovo
PowerMetric
per la misurazione delle attività relative all'energia e all'alimentazione nei benchmark. (I9f39b, b/220183779). - È stata aggiunta una nuova modalità di compilazione
CompilationMode.Ignore
per saltare la reimpostazione e la compilazione del profilo. (Ibbcf8, b/230453509). - È stato aggiunto un nuovo parametro a
BaselineProfileRule#collectBaselineProfile
per filtrare il file di output in base ai nomi dei pacchetti (If7338, b/220146561) - Consente allo sviluppatore di scaricare il dispositivo per misurare il consumo di corrente. (I6a6cb)
- È stata aggiunta la possibilità di svuotare la cache dello smoothr in
MacrobenchmarkScope
. (I32122) - Consente allo sviluppatore di configurare la visualizzazione del tipo di metrica e dei dettagli delle categorie di sottosistemi desiderate. (I810c9)
- In precedenza, un valore
UnsupportedOperationException
veniva aggiunto al benchmark se l'esecuzione su un dispositivo non supportato era supportata. Ora il valore UOE si verifica solo se la metrica viene utilizzata su un dispositivo non supportato (ad es.PowerMetric.configure
). (I5cf20, b/227229375) - Sono stati aggiunti
TotalPowerMetric
eTotalEnergyMetric
per la misurazione della potenza e dell'energia totali in ogni categoria di sistema nei macrobenchmark. (I3b26b, b/224557371).
Correzioni di bug
- Risolto un problema per cui i metodi compilati non venivano reimpostati correttamente tra ogni macrobenchmark sulle build non rooted. Purtroppo, questa operazione richiede la reinstallazione dell'APK a ogni iterazione, in modo da cancellare i dati dell'applicazione per ogni macrobenchmark. (I31c74, b/230665435)
- Correggi l'arresto anomalo della registrazione della traccia sull'API 21/22 (If7fd6, b/227509388, b/227510293, b/227512788)
- Rilevamento del completamento dell'avvio dell'attività di revisione per correggere l'eccezione "Impossibile leggere le metriche" nei macrobenchmark di avvio. (Ia517c)
Versione 1.1.1
Versione 1.1.1
9 novembre 2022
androidx.benchmark:benchmark-*:1.1.1
viene rilasciato. La versione 1.1.1 contiene questi commit.
Correzioni di bug
- Corregge
android.system.ErrnoException: open failed: EACCES
, che si verificava su alcuni dispositivi Android 11 (API 30) e versioni successive. Questa è la soluzione migliore di1.2.0-alpha01
. (aosp/2072249)
Versione 1.1.0
Versione 1.1.0
15 giugno 2022
androidx.benchmark:benchmark-*:1.1.0
viene rilasciato. La versione 1.1.0 contiene questi commit.
- Questa versione è identica a
androidx.benchmark:benchmark-*:1.1.0-rc03
.
Modifiche importanti dalla versione 1.0.0
Il supporto di Jetpack Macrobenchmarks, che consente di misurare le interazioni dell'intera app come l'avvio e lo scorrimento, offre la possibilità di acquisire tracce e misurare le sezioni delle tracce.
Supporto per i profili di riferimento
CompilationMode.Partial
per misurare l'efficacia dei profili di riferimento.@BaselineProfileRule
per generare automaticamente profili di riferimento per un determinato percorso dell'utente critico.
Supporto di metriche di allocazione e profili durante le esecuzioni di Microbenchmark.
Versione 1.1.0-rc03
1° giugno 2022
androidx.benchmark:benchmark-*:1.1.0-rc03
viene rilasciato. La versione 1.1.0-rc03 contiene questi commit.
Correzioni di bug
Evita di reinstallare il pacchetto di destinazione a ogni iterazione del benchmark. ( aosp/2093027, b/231976084).
Rimuovi il ritardo di
300ms
dapressHome()
. (aosp/2086030, b/231322975)Migliora la velocità di iterazione di Macrobenchmark ottimizzando i comandi di Shell usati in background. (aosp/2086023, b/231323582)
Supporto per dispositivi Gradle gestiti durante la generazione di profili di riferimento con Macrobenchmark. (aosp/2062228, b/228926421)
Versione 1.1.0-rc02
11 maggio 2022
androidx.benchmark:benchmark-*:1.1.0-rc02
viene rilasciato. La versione 1.1.0-rc02 contiene questi commit.
- Tieni presente che questa release include una modifica del comportamento, in quanto le app vengono ora completamente reinstallate tra un benchmark e l'altro per garantire misurazioni accurate.
Correzioni di bug/modifiche al comportamento
Risolto il problema per cui la compilazione dell'app non veniva reimpostata correttamente tra i macrobenchmark e non veniva reimpostata affatto nelle build non rooted. Questa operazione risolve molti casi in cui l'esecuzione di più test potrebbe comportare un effetto minimo o nullo sulle misurazioni di
CompilationMode
. Per risolvere il problema, l'app di destinazione sta reinstallando completamente ogni metodo di test, in modo da cancellare i dati dell'applicazione tra ogni macrobenchmark. (I31c74, b/230665435).Poiché ciò impedisce alle app di configurare lo stato prima dei test, ora è possibile saltare la compilazione / reinstallazione per consentire di aggirare questo problema. Ad esempio puoi compilare completamente la destinazione con un comando shell
cmd package compile -f -m speed <package>
, quindi bypassare il passaggio di compilazione del macrobenchmark.Ad esempio, nel file build.gradle del tuo macrobenchmark:
android { defaultConfig { testInstrumentationRunnerArgument 'androidx.benchmark.compilation.enabled, 'false' } }
In alternativa, dalla riga di comando di Gradle:
./gradlew macrobenchmark:cC -P android.testInstrumentationRunnerArguments.androidx.benchmark.compilation.enabled=false
È stato possibile condividere un modulo tra macrobenchmark e profili di riferimento per la generazione di test mediante l'aggiunta dell'argomento di strumentazione
androidx.benchmark.enabledRules
. Utilizza "Macrobenchmark" o "BaselineProfile" per eseguire un solo tipo di test, ad esempio quando generiBaselineProfiles
su un emulatore. (I756b7, b/230371561)Ad esempio, nel file build.gradle del tuo macrobenchmark:
android { defaultConfig { testInstrumentationRunnerArgument 'androidx.benchmark.enabledRules', 'BaselineProfile' } }
In alternativa, dalla riga di comando di Gradle:
./gradlew macrobenchmark:cC -P android.testInstrumentationRunnerArguments.androidx.benchmark.enabledRules=BaselineProfile
Versione 1.1.0-rc01
20 aprile 2022
androidx.benchmark:benchmark-*:1.1.0-rc01
viene rilasciato. La versione 1.1.0-rc01 contiene questi commit.
Correzioni di bug
- I link di output del profilo di riferimento in Android Studio ora utilizzano un nome file univoco. In questo modo l'output riflette sempre gli ultimi risultati dell'utilizzo di un oggetto
BaselineProfileRule
. ( aosp/2057008, b/228203086).
Versione 1.1.0-beta06
6 aprile 2022
androidx.benchmark:benchmark-*:1.1.0-beta06
viene rilasciato. La versione 1.1.0-beta06 contiene questi commit.
Correzioni di bug
- Correggi l'arresto anomalo della registrazione della traccia sull'API 21/22 (If7fd6, b/227509388)
- Rilevamento del completamento dell'avvio dell'attività di revisione per correggere l'eccezione "Impossibile leggere le metriche" nei macrobenchmark di avvio. (Ia517c)
- Correggi le metriche di avvio per Macrobenchmark quando viene utilizzato
CompilationMode.None()
. Prima di questa modifica, l'appCompilationMode.Partial()
sembrava essere più lenta diCompilation.None()
. (611ac9).
Versione 1.1.0-beta05
23 marzo 2022
androidx.benchmark:benchmark-*:1.1.0-beta05
viene rilasciato. La versione 1.1.0-beta05 contiene questi commit.
Correzioni di bug
- Chiudi il pacchetto dopo aver saltato l'installazione del profilo quando utilizzi
CompilationMode.None
. (aosp/1991373). - Risolto il problema per cui Macrobenchmarks non è in grado di raccogliere le metriche di avvio quando si utilizza
StartupMode.COLD
. (aosp/2012227 b/218668335)
Versione 1.1.0-beta04
23 febbraio 2022
androidx.benchmark:benchmark-*:1.1.0-beta04
viene rilasciato. La versione 1.1.0-beta04 contiene questi commit.
Correzioni di bug
Correggi le metriche mancanti su Android 10 e
NoSuchElementException
causati da nomi di processi non acquisiti correttamente nelle tracce. (Ib4c17, b/218668335).Utilizza
PowerManager
per il rilevamento della limitazione termica su Q (API 29) e versioni successive. In questo modo si riduce in modo significativo la frequenza di falsi positivi nel rilevamento della limitazione termica (nuovo tentativo di benchmark dopo 90 secondi di attesa) e accelera i benchmark in modo significativo sulle build utente. Fornisce inoltre il rilevamento della limitazione anche quando gli orologi sono bloccati (se sono bloccati troppo in alto rispetto all'ambiente fisico del dispositivo). (I9c027, b/217497678, b/131755853).Filtra la profilazione simpleperf campionata solo del thread
measureRepeated
per semplificare l'ispezione (Ic3e12, b/217501939)Supporta le metriche dei sottoprocessi UI denominati nelle app multi-processo (Ice6c0, b/215988434)
Filtra le regole del profilo di riferimento per scegliere come target Android 9 (SDK 28). aosp/1980331 b/216508418
Salta l'installazione del profilo quando utilizzi
Compilation.None()
. Inoltre, segnala gli avvisi quando l'app utilizza una versione precedente diandroidx.profileinstaller
e il plug-in Android per Gradle. aosp/1977029
Versione 1.1.0-beta03
9 febbraio 2022
androidx.benchmark:benchmark-*:1.1.0-beta03
viene rilasciato. La versione 1.1.0-beta03 contiene questi commit.
Modifiche alle API
- È stato aggiunto
AudioUnderrunMetric
alla libreria di macrobenchmark sotto il flag sperimentale per consentire il rilevamento di sottoinsiemi audio (Ib5972) BaselineProfileRule
non accetta più un bloccosetup
in quanto funzionava comeprofileBlock
. (Ic7dfe, b/215536447).Ad esempio,
@Test fun collectBaselineProfile() { baselineRule.collectBaselineProfile( packageName = PACKAGE_NAME, setupBlock = { startActivityAndWait() }, profileBlock = { // ... } ) }
@Test fun collectBaselineProfile() { baselineRule.collectBaselineProfile( packageName = PACKAGE_NAME, profileBlock = { startActivityAndWait() // ... } ) }
Correzioni di bug
- Risolto il problema per cui le tracce del profiler microbench non venivano aggiornate nelle esecuzioni successive quando vengono collegate nell'output di Studio (I5ae4d, b/214917025)
- Impedisci i comandi della shell di compilazione sull'API 23 (Ice380)
- Rinominato
FrameCpuTime
->FrameDurationCpu
,FrameUiTime
->FrameDurationUi
per chiarire che si tratta di durate, non timestamp e per corrispondere ai prefissi. (I0eba3, b/216337830).
Versione 1.1.0-beta02
26 gennaio 2022
androidx.benchmark:benchmark-*:1.1.0-beta02
viene rilasciato. La versione 1.1.0-beta02 contiene questi commit.
Correzioni di bug
- I risultati del campionamento dello stack di Microbenchmark e del profilo di tracciamento del metodo sono ora collegati nell'output di Studio, come ad altri output di profilazione, e non sopprimono la metrica di allocazione. (Idcb65, b/214440748, b/214253245).
- BaselineProfileRule ora stampa il comando
adb pull
nel logcat e nell'output di Studio per eseguire il pull del file di testo BaselineProfile generato. (f08811)
Versione 1.1.0-beta01
12 gennaio 2022
androidx.benchmark:benchmark-*:1.1.0-beta01
viene rilasciato. La versione 1.1.0-beta01 contiene questi commit.
Correzioni di bug
- Correggere l'abilitazione dell'argomento profiler che viene ignorato. (I37373, b/210619998)
- Rimosso
CompliationModes
deprecato (I98186, b/213467659) - È stato cambiato l'argomento del profilo di riferimento
CompilationMode.Partial
in enum per chiarezza. (Id67ea)
Versione 1.1.0-alpha13
15 dicembre 2021
androidx.benchmark:benchmark-*:1.1.0-alpha13
viene rilasciato. La versione 1.1.0-alpha13 contiene questi commit.
Modifiche alle API
- Aggiungi il tracciamento di sistema a basso costo all'output del microbench su Android Q (API 29 e versioni successive). Tieni presente che al momento questa funzionalità non acquisisce il tracciamento personalizzato (tramite le API Jetpack
android.os.Trace
oandroidx.tracing
) per evitare di influire sui risultati. Questo tracciamento dovrebbe essere utile per diagnosticare l'instabilità, soprattutto da origini esterne al benchmark. (I298be, b/205636583, b/145598917). - Chiarisci
CompilationModes
in tre classi: Completa, Nessuna, Parziale. In precedenza, avevano un nome incoerente dopo gli argomenti di compilazione (che ora trattiamo come dettagli di implementazione) e le funzionalità. Ciò rende più chiari i compromessi, le potenziali combinazioni e il comportamento nelle versioni della piattaforma. (I3d7bf, b/207132597) - La configurazione e la misura ora sono sempre in coppia, in ordine. Ora puoi eseguire una query sul nome del pacchetto e sull'iterazione (anche se l'iterazione potrebbe essere
null
in alcuni scenari di riscaldamento). (Id3b68, b/208357448, b/208369635).
Correzioni di bug
- Correzione di
CompilationMode.Speed
considerata erroneamente comeNone
(I01137)
Versione 1.1.0-alpha12
17 novembre 2021
androidx.benchmark:benchmark-*:1.1.0-alpha12
viene rilasciato. La versione 1.1.0-alpha12 contiene questi commit.
Nuove funzionalità
- Aggiungi TraceSezioneMetric dell'esperimento per le misurazioni dei tempi personalizzate basate su tracce. (I99db1, b/204572664).
Correzioni di bug
- Riattiva il dispositivo a ogni iterazione per garantire che l'UI possa essere testata (richiede la disattivazione della schermata di blocco). (Ibfa28, b/180963442)
- Corregge diversi arresti anomali nella modalità di profilazione di StackSampling su emulatori e dispositivi non rooted (Icdbda, b/202719335)
- Rimosso 0,5 secondi di sospensione alla fine di ogni iterazione.Se con questa modifica noti che mancano metriche, segnala un bug. (Iff6aa).
- Riduci le probabilità di perdita di dati e il sovraccarico della memoria derivante dal tracciamento (Id2544, b/199324831, b/204448861)
- Riduci le dimensioni delle tracce di circa il 40% passando al formato compatto di archiviazione pianificata. (Id5fb6, b/199324831).
- Implementazioni aggiornate delle metriche di avvio in modo che terminino sempre alla fine del renderingthread. Questo sarà più coerente tra le diverse versioni della piattaforma e più fedele alle misurazioni in-app. (Ic6b55)
Versione 1.1.0-alpha11
3 novembre 2021
androidx.benchmark:benchmark-*:1.1.0-alpha11
viene rilasciato. La versione 1.1.0-alpha11 contiene questi commit.
Modifiche alle API
- Macrobenchmark ora ha un
minSdkVersion
pari a23
. (If2655) - Aggiunge un nuovo
BaselineProfileRule
sperimentale in grado di generare profili di riferimento per il percorso dell'utente critico dell'app. Documentazione dettagliata da seguire. (Ibbefa, b/203692160). - Rimuove la variante di interfaccia misurata, che è stata aggiunta per i chiamanti Java, in quanto causava ambiguità nel completamento/risoluzione del metodo. I chiamanti Java dovranno nuovamente restituire Unit.Instance da measurerepeated. Se ciò rappresenta un inconveniente, segnala un bug e potremo esaminare questa modifica in una versione futura. (Ifb23e, b/204331495).
Versione 1.1.0-alpha10
27 ottobre 2021
androidx.benchmark:benchmark-*:1.1.0-alpha10
viene rilasciato. La versione 1.1.0-alpha10 contiene questi commit.
Modifiche alle API
- Esegui il backport StartupTimingMetric per tornare all'API 23. Questa nuova implementazione gestisce anche meglio reportFullyDrawn() per attendere che venga eseguito il rendering dei contenuti corrispondenti. (If3ac9, b/183129298)
- Aggiunta di JvmOverloads a più metodi MacrobenchmarkScope per chiamanti Java. (I644fe, b/184546459).
- Fornisci una funzione MacrobenchmarkRule.measurerepeated alternativa che utilizza un
Consumer<MacrobenchmarkScope>
per un utilizzo idiomatico nel linguaggio Java. (If74ab, b/184546459).
Correzioni di bug
- Correzione per le tracce che non si avviavano abbastanza presto e che mancavano dati delle metriche. Questo dovrebbe risolvere il problema "Impossibile leggere le metriche durante il benchmark" causate dalla libreria stessa. (I6dfcb, b/193827052, b/200302931).
- FrameNegaSlack è stato rinominato FrameOverrun per chiarirne il significato, ovvero quanto il frame ha superato il budget temporale. (I6c2aa, b/203008701).
Versione 1.1.0-alpha09
13 ottobre 2021
androidx.benchmark:benchmark-*:1.1.0-alpha09
viene rilasciato. La versione 1.1.0-alpha09 contiene questi commit.
Correzioni di bug
- È supportato l'eliminazione della cache delle pagine del kernel senza root sull'API 31/S e versioni successive, in modo da aumentare l'accuratezza dei lanci StartupMode.COLD. (Iecfdb, b/200160030).
Versione 1.1.0-alpha08
29 settembre 2021
androidx.benchmark:benchmark-*:1.1.0-alpha08
viene rilasciato. La versione 1.1.0-alpha08 contiene questi commit.
Modifiche alle API
- Attiva i macrobenchmark a scorrimento per l'esecuzione dell'API 23 (If39c2, b/183129298)
- Aggiungi un nuovo tipo di metrica campionata all'output di UI e JSON, focalizzata sui percentili di più campioni per iterazione. (I56247, b/199940612)
- Passa alle metriche in virgola mobile in tutte le librerie di benchmark (tronchete nell'interfaccia utente di Studio). (I69249, b/197008210)
Versione 1.1.0-alpha07
1° settembre 2021
androidx.benchmark:benchmark-*:1.1.0-alpha07
viene rilasciato. La versione 1.1.0-alpha07 contiene questi commit.
Modifiche alle API
- È stato aumentato il valore minimo dell'API a 21 per riflettere il livello API più basso che si prevede venga supportato in futuro. L'API minima attuale supportata continua a essere comunicata tramite requiredApi() e al momento è 29 (I440d6, b/183129298)
Correzioni di bug
- Corregge
ProfileInstaller
per consentire alle app che utilizzano profili di riferimento di eseguire più facilmente i MacroBenchmark conCompilationMode.BaselineProfile
. (I42657, b/196074999) NOTA: richiede anche l'aggiornamento aandroidx.profileinstaller:profileinstaller:1.1.0-alpha04
o a una versione successiva. - I benchmark
StartupMode.COLD
eCompilationMode.None
sono ora più stabili. (I770cd, b/196074999)
Versione 1.1.0-alpha06
18 agosto 2021
androidx.benchmark:benchmark-*:1.1.0-alpha06
viene rilasciato. La versione 1.1.0-alpha06 contiene questi commit.
Modifiche alle API
- Aggiunto l'argomento di strumentazione
androidx.benchmark.iterations
per consentire il override manuale del conteggio delle iterazioni durante i test/la profilazione localmente. (6188be, b/194137879)
Correzioni di bug
- Passaggio a Simpleperf come profiler di campionamento predefinito sull'API 29 e versioni successive (Ic4b34, b/158303822).
Problemi noti
CompilationMode.BaselineProfile
è ancora in fase di sviluppo. Evita di usarla per determinare lo stato attuale di un profilo.
Versione 1.1.0-alpha05
4 agosto 2021
androidx.benchmark:benchmark-*:1.1.0-alpha05
viene rilasciato. La versione 1.1.0-alpha05 contiene questi commit.
1.1.0-alpha04
è stato annullato prima del rilascio a causa di un incidente sporatico. b/193827052
Modifiche alle API
- È stato cambiato startActivityAndAttend per richiamare il lancio tramite
am start
, il che riduce il tempo di ogni iterazione di misurazione di circa 5 secondi, a costo del fatto che non supporta più i pacchetti di intent. (I5a6f5, b/192009149)
Correzioni di bug
- Riduci l'aggressività del rilevamento della limitazione termica e ricalcola la base di riferimento se le limitazioni vengono rilevate frequentemente. (I7327b)
- Corregge FrameTimingMetric in modo che funzioni su Android S beta (Ib60cc, b/193260119)
- Utilizza un
EmptyActivity
per disattivare lo stato di arresto forzato dell'app di destinazione in modo da supportare meglioCompilationMode.BaselineProfile
. (Id7cac, b/192084204) - Estensione del file di traccia modificata in
.perfetto-trace
in modo che corrisponda allo standard della piattaforma. (I4c236, b/174663039). - StartupTimingMetric ora restituisce la metrica "fullDrawnMs" per misurare il tempo che manca al completamento del rendering dell'applicazione. Per definire questa metrica per la tua app, chiama Activity.reportFullyDrawn quando i contenuti iniziali sono pronti, ad esempio quando gli elementi dell'elenco iniziali vengono caricati dal database o dalla rete. (metodo reportFullyDrawn disponibile senza controlli della versione build su ComponentiActivity). Tieni presente che il test deve essere eseguito per un tempo sufficiente ad acquisire la metrica (startActivityAndwait non attende reportFullyDrawn). (If1141, b/179176560)
- Riduci il costo dell'aggiunta di metadati Ui alle tracce di oltre 50 ms (Ic8390, b/193923003)
- Aumento drastico della frequenza di polling quando si interrompe il tracciamento, il che può ridurre, ad esempio, il tempo di esecuzione del benchmark di avvio, di oltre il 30% (Idfbc1, b/193723768)
Versione 1.1.0-alpha03
16 giugno 2021
androidx.benchmark:benchmark-*:1.1.0-alpha03
viene rilasciato. La versione 1.1.0-alpha03 contiene questi commit.
Nuove funzionalità
- È stato aggiunto un nuovo
CompilationMode.BaselineProfile
per supportare i profili installati utilizzando la libreria Jetpack ProfileInstaller. (aosp/1720930).
Correzioni di bug
Il codice Gradle di esempio per eliminare gli errori di benchmark è stato aggiornato in modo da utilizzare un'API non deprecata con una sintassi che supporta anche gli utenti .gradle.kts.
Ad esempio
testInstrumentationRunnerArguments["androidx.benchmark.suppressErrors"] = "EMULATOR,LOW-BATTERY"
Versione 1.1.0-alpha02
18 maggio 2021
La versione 1.1.0-alpha02 del benchmark introduce un componente importante del benchmarking: Macrobenchmark. Oltre al benchmark che consente di misurare i loop della CPU, macrobenchmark ti consente di misurare le interazioni dell'intera app, come l'avvio e lo scorrimento, e di acquisire le tracce. Per ulteriori informazioni, consulta la documentazione della raccolta.
androidx.benchmark:benchmark-*:1.1.0-alpha02
viene rilasciato. La versione 1.1.0-alpha02 contiene questi commit.
Nuove funzionalità
Artefatti Macrobenchmark aggiunti (androidx.benchmark:benchmark-macro-junit4
e androidx.benchmark:benchmark-macro
)
- Acquisisci metriche sulle prestazioni di avvio, scorrimento/animazione dalla tua app, in locale o in CI
- Acquisisci e analizza le tracce da Android Studio
Correzioni di bug
- Soluzione alternativa problema relativo alle autorizzazioni della shell con la directory di output su Android 12 (nota: potrebbe essere necessario aggiornare il plug-in Android Gradle alla versione 7.0.0 canary e Android Studio ad Arctic Fox (2020.3.1), per continuare ad acquisire i file di output sui dispositivi interessati). (Icb039)
- Supporto della memorizzazione nella cache della configurazione in BenchmarkPlugin (6be1c1, b/159804788)
- Output file semplificato: attivo per impostazione predefinita, in una directory che non richiede
requestLegacyExternalStorage=true
(8b5a4d, b/172376362) - Corregge gli avvisi logcat di stampa della libreria relativi al mancato rilevamento dei thread JIT nelle versioni della piattaforma in cui non è presente. (I9cc63, b/161847393)
- Correzione della frequenza massima del dispositivo di lettura. (I55c7a)
Versione 1.1.0-alpha01
10 giugno 2020
androidx.benchmark:benchmark-common:1.1.0-alpha01
, androidx.benchmark:benchmark-gradle-plugin:1.1.0-alpha01
e androidx.benchmark:benchmark-junit4:1.1.0-alpha01
vengono rilasciati. La versione 1.1.0-alpha01 contiene questi commit.
Nuove funzionalità della versione 1.1
- Metrica di allocazione: i benchmark ora eseguono una fase aggiuntiva dopo il riscaldamento e la tempistica, acquisendo i conteggi dell'allocazione. Le allocazioni possono causare problemi di prestazioni sulle versioni precedenti della piattaforma (140 ns in O sono diventati 8 ns in M, misurati su Nexus5X, con orologi bloccati). Questa metrica viene visualizzata nell'output della console Android Studio, nonché
- Supporto della profilazione: ora puoi acquisire i dati di profilazione per l'esecuzione di un benchmark, in modo da ispezionare i motivi per cui il codice potrebbe essere lento. Benchmark supporta l'acquisizione del tracciamento o del campionamento dei metodi da ART. Questi file possono essere ispezionati con il Profiler in Android Studio utilizzando File > Apri.
- Il plug-in Benchmark Gradle ora fornisce valori predefiniti per una configurazione più semplice:
testBuildType
è impostato per il rilascio per impostazione predefinita, per evitare di usare dipendenze con copertura del codice integrata. La release buildType è configurata anche come buildType predefinito, consentendo ad Android Studio di selezionare automaticamente la variante di build corretta quando apri un progetto per la prima volta. (b/138808399)signingConfig.debug
viene utilizzata come configurazione di firma predefinita (b/153583269)
** Correzioni di bug **
- Ha ridotto significativamente l'overhead associato alla transizione del riscaldamento, dove la prima misurazione per ogni benchmark è stata artificialmente più alta di altre. Questo problema era più pronunciato in benchmark molto ridotti (1 microsecondo o meno). (b/142058671)
- È stato corretto l'errore
InstrumentationResultParser
stampato per ogni benchmark durante l'esecuzione dalla riga di comando. (I64988, b/154248456)
Problemi noti
- Dalla riga di comando e dalle chiamate gradle di Benchmark non vengono stampati i risultati direttamente. Puoi risolvere il problema eseguendo Studio o analizzando il file di output JSON per trovare i risultati.
- I report di benchmark non riescono a estrarre il report dai dispositivi su cui è installata un'app con un ID applicazione che termina con "android" o "download" (senza distinzione tra maiuscole e minuscole). Gli utenti che riscontrano questo problema dovrebbero eseguire l'upgrade del plug-in Android per Gradle alla versione 4.2-alpha01 o successiva.
Versione 1.0.0
Versione benchmark 1.0.0
20 novembre 2019
Vengono rilasciate le versioni androidx.benchmark:benchmark-common:1.0.0
, androidx.benchmark:benchmark-gradle-plugin:1.0.0
e androidx.benchmark:benchmark-junit4:1.0.0
senza modifiche dalla versione 1.0.0-rc01. La versione 1.0.0 contiene questi commit.
Funzionalità principali della versione 1.0.0
La libreria Benchmark ti consente di scrivere benchmark di rendimento per il codice dell'app e ottenere risultati rapidamente.
Questa funzionalità previene i problemi di configurazione e runtime e stabilizza le prestazioni del dispositivo per garantire che le misurazioni siano accurate e coerenti. Esegui i benchmark direttamente in Android Studio o nell'integrazione continua per osservare le prestazioni del codice nel tempo ed evitare regressioni.
Le funzionalità principali includono:
- Stabilizzazione orologio
- Assegnazione automatica della priorità dei thread
- Supporto per i test delle prestazioni della UI, come nell'esempio di RecyclerView
- Riscaldamento e looping-aware-JIT
- Output benchmark JSON per la post-elaborazione
Versione 1.0.0-rc01
23 ottobre 2019
androidx.benchmark:benchmark-common:1.0.0-rc01
, androidx.benchmark:benchmark-gradle-plugin:1.0.0-rc01
e androidx.benchmark:benchmark-junit4:1.0.0-rc01
vengono rilasciati. La versione 1.0.0-rc01 contiene questi commit.
Nuove funzionalità
- Aggiunta del tracciamento di systrace ai benchmark
Correzioni di bug
- Risolto il problema di instabilità della metrica in cui JIT non terminava prima del riscaldamento a causa della riduzione della priorità (b/140773023)
- Directory di output JSON unificata per il plug-in Android Gradle 3.5 e 3.6
Versione 1.0.0-beta01
9 ottobre 2019
androidx.benchmark:benchmark-common:1.0.0-beta01
, androidx.benchmark:benchmark-gradle-plugin:1.0.0-beta01
e androidx.benchmark:benchmark-junit4:1.0.0-beta01
vengono rilasciati. La versione 1.0.0-beta01 contiene questi commit.
Nuove funzionalità
- Esegui la garbage collection prima di ogni riscaldamento per ridurre la pressione della memoria da un benchmark a quello successivo (b/140895105)
Correzioni di bug
- Aggiunta la dipendenza
androidx.annotation:android-experimental-lint
, in modo che il codice Java generi correttamente errori di lint quando non viene utilizzata l'API sperimentale, in modo simile a quanto fornito dall'annotazione sperimentale Kotlin per i chiamanti Kotlin. - Ora rileva correttamente l'utilizzo dell'argomento di strumentazione
additionalTestOutputDir
per l'output nel plug-in Android per Gradle 3.6, per sapere quando AGP gestirà la copia dei dati. - Correggi la frequenza di clock non rilevata in JSON per stampare correttamente
-1
(b/141945670).
Versione 1.0.0-alpha06
18 settembre 2019
androidx.benchmark:benchmark-common:1.0.0-alpha06
, androidx.benchmark:benchmark-gradle-plugin:1.0.0-alpha06
e androidx.benchmark:benchmark-junit4:1.0.0-alpha06
vengono rilasciati. La versione 1.0.0-alpha06 contiene questi commit.
Nuove funzionalità
- È stato aggiunto un controllo per l'utilizzo errato del vecchio pacchetto per l'esecutore del test, che ora fornisce un messaggio di errore più utile
Modifiche alle API
- L'annotazione sperimentale
ExperimentalAnnotationReport
è ora pubblica correttamente. L'utilizzo dell'API sperimentale BenchmarkState#report ora richiede questa annotazione
Versione 1.0.0-alpha05
5 settembre 2019
androidx.benchmark:benchmark-common:1.0.0-alpha05
, androidx.benchmark:benchmark-gradle-plugin:1.0.0-alpha05
e androidx.benchmark:benchmark-junit4:1.0.0-alpha05
vengono rilasciati. I commit inclusi in questa versione sono disponibili qui.
Modifiche alle API
- L'API
BenchmarkState.reportData
è ora contrassegnata come sperimentale
Correzioni di bug
- Correzione dello script di blocco dell'orologio, che non funzionava sui dispositivi in cui mancavano le utilità della shell
cut
oexpr
. - Risolto il problema con l'attività
./gradlew lockClocks
che si bloccava su dispositivi rooted con una versione precedente dell'utilità su, che non supportava il flag-c
.
Versione 1.0.0-alpha04
7 agosto 2019
androidx.benchmark:benchmark-common:1.0.0-alpha04
, androidx.benchmark:benchmark-gradle-plugin:1.0.0-alpha04
e androidx.benchmark:benchmark-junit4:1.0.0-alpha04
vengono rilasciati. I commit inclusi in questa versione sono disponibili qui.
È stata aggiunta anche nuova documentazione su come utilizzare la libreria di benchmark senza Gradle, sia per l'utilizzo con diversi sistemi di compilazione (come Bazel o Buck), sia durante l'esecuzione in CI. Per maggiori informazioni, consulta Creare benchmark senza Gradle ed Eseguire benchmark nell'integrazione continua.
Nuove funzionalità
- Plug-in Gradle
- Ora disattiva automaticamente la copertura dei test e imposta
AndroidBenchmarkRunner
per impostazione predefinita (b/138374050) - Aggiunto il supporto per la nuova copia dei dati basata su AGP, durante l'esecuzione di benchmark e l'uso di AGP 3.6 o versioni successive
- Ora disattiva automaticamente la copertura dei test e imposta
- Aggiunte al formato JSON
- Tempo di esecuzione totale del test di benchmark di output (b/133147694)
- I benchmark
@Parameterized
che utilizzano una stringa di nome (ad esempio@Parameters(name = "size={0},depth={1}")
) ora restituiscono nomi e valori dei parametri per benchmark nell'output JSON (b/132578772)
- Modalità di prova (b/138785848)
- È stata aggiunta una modalità di prova per eseguire ogni loop di benchmark una sola volta, per verificare la presenza di errori/arresti anomali senza acquisire le misurazioni. Questo può essere utile, ad esempio, per eseguire rapidamente dei benchmark nella fase di pre-invio per verificare che non siano danneggiati.
Modifiche alle API
- La struttura del modulo è cambiata grazie alla suddivisione della libreria (b/138451391)
benchmark:benchmark-junit4
contiene classi con la dipendenza JUnit:AndroidBenchmarkRunner
eBenchmarkRule
, entrambe spostate nel pacchettoandroidx.benchmark.junit4
benchmark:benchmark-common
contiene il resto della logica, tra cui l'API BenchmarkState- Questa suddivisione consentirà alla libreria di supportare il benchmarking senza API JUnit4 in futuro
- Gli avvisi di configurazione ora vengono trattati come errori e causano l'arresto anomalo del test (b/137653596)
- Ciò viene fatto per incoraggiare ulteriormente le misurazioni accurate, soprattutto nella CI
- Questi errori possono essere ridotti ad avvisi con un argomento di strumentazione. Ad esempio:
-e androidx.benchmark.suppressErrors "DEBUGGABLE,LOW_BATTERY"
Correzioni di bug
- Gli errori di scrittura su unità di archiviazione esterna sui dispositivi Q forniscono messaggi più descrittivi, con suggerimenti per la risoluzione del problema
- Le schermate vengono accese automaticamente durante le esecuzioni di benchmark, anziché restituire errori quando lo schermo è spento
Contributi esterni
- Ringraziamo Sergey Zakharov per aver contribuito ai miglioramenti dell'output JSON e per la correzione dei problemi di disattivazione dello schermo.
Versione 1.0.0-alpha03
2 luglio 2019
androidx.benchmark:benchmark:1.0.0-alpha03
e androidx.benchmark:benchmark-gradle-plugin:1.0.0-alpha03
vengono rilasciati. I commit inclusi in questa versione sono disponibili qui.
Nuove funzionalità
- Scopri la durata del sonno a causa della limitazione termica per benchmark nel report JSON completo
Correzioni di bug
- Non è più necessario applicare il plug-in Gradle dopo i plug-in Android e il blocco di Android.
- Aggiunge il supporto per i report di benchmark sui dispositivi Android 10 utilizzando lo spazio di archiviazione con ambito
Versione 1.0.0-alpha02
6 giugno 2019
Vengono rilasciate le versioni androidx.benchmark:1.0.0-alpha02
e
androidx.benchmark:benchmark-gradle-plugin:1.0.0-alpha02
. I commit inclusi in questa versione sono disponibili qui.
Tieni presente che lo schema JSON viene trattato come un'API. Prevediamo di seguire gli stessi vincoli di stabilità delle altre API: stabile (con eccezioni molto rare) una volta nella versione beta e corretti nella versione finale, con aggiunte solo a release di minore entità e modifiche/rimozioni nelle release principali.
Modifiche alle API
Schema JSON revisionato. È probabile che le ulteriori modifiche allo schema JSON siano limitate alle aggiunte:
- È stata riorganizzata la struttura degli oggetti dei risultati per supportare altri gruppi di metriche in futuro (b/132713021)
- Sono state aggiunte informazioni sul contesto dell'esecuzione di test, ad esempio informazioni su dispositivo e build e se gli orologi sono bloccati, all'oggetto di primo livello (b/132711920)
- I nomi delle metriche temporali ora contengono "ns" (b/132714527)
- Sono state aggiunte statistiche aggiuntive per ogni metrica segnalata (massima, mediana, minima) e sono state rimosse statistiche di riepilogo "nanos" semplificate (b/132713851)
Output XML rimosso (b/132714414)
Rilevamento della limitazione termica rimosso dall'API
BenchmarkState.reportData
(b/132887006)
Correzioni di bug
- Risolto il problema di
./gradlew lockClocks
che non rimaneva fissa su alcuni dispositivi OS recenti (b/133424037) - Rilevamento della limitazione disabilitato per l'emulatore (b/132880807)
Versione 1.0.0-alpha01
7 maggio 2019
androidx.benchmark:benchmark:1.0.0-alpha01
viene rilasciato. I commit inclusi in questa versione sono disponibili qui.