Het optimaliseren van het CPU-gebruik van uw app heeft vele voordelen, zoals het bieden van een snellere en soepelere gebruikerservaring en het behoud van de levensduur van de batterij van het apparaat.
U kunt de CPU-Profiler gebruiken om het CPU-gebruik en de thread-activiteit van uw app in real-time te inspecteren tijdens interactie met uw app, of u kunt de details inspecteren in geregistreerde method traces, function traces en system traces.
de specifieke soorten informatie die de CPU-Profiler registreert en weergeeft, worden bepaald door welke opnameconfiguratie u kiest:
- System Trace: legt fijnkorrelige details vast waarmee u kunt controleren hoe uw app met systeembronnen samenwerkt.
-
Method and function traces: voor elke thread in uw app-proces kunt u achterhalen welke methoden (Java) of functies (C/C++) gedurende een periode worden uitgevoerd en de CPU-bronnen die elke methode of functie verbruikt tijdens de uitvoering ervan. U kunt ook methode-en functiesporen gebruiken om callersand callees te identificeren. Een aanroeper is een methode of functie die een andere methode of functie aanroept, en een callee is er een die door een andere methode of functie wordt aangeroepen. U kunt deze informatie gebruiken om te bepalen welke methoden of functies verantwoordelijk zijn voor het aanroepen van bepaalde resource-zware taken te vaak en optimaliseer de code van uw app om onnodig werk te voorkomen.
bij het opnemen van methode traces, kunt u sampled of instrumentedrecording kiezen. Bij het opnemen van functietraces kunt u alleen sampled recording gebruiken.
voor details over het gebruik en kiezen van elk van deze trace-opties, zie een opname-configuratie kiezen.
- CPU Profiler overzicht
- record traces
- Kies een opnameconfiguratie
- een opnameconfiguratie aanmaken, bewerken of weergeven
- Registreer CPU-activiteit met de Debug API
- Registreer CPU-activiteit tijdens het opstarten van een app
- Export traces
- importeer traces
- inspecteer traces
- sporen inspecteren met behulp van de Aanroepdiagram
- sporen inspecteren met behulp van het tabblad Vlamdiagram
- sporen inspecteren met behulp van Top-Down en Bottom-Up
- inspecteer systeemsporen
- inspecteer frame rendering data
CPU Profiler overzicht
om de CPU Profiler te openen, volgt u deze stappen:
-
selecteer View > Tool Windows > Profiler of klik op Profile in de werkbalk.
Als u wordt gevraagd door het dialoogvenster Deployment Target selecteren, kiest u het apparaat waarmee u uw app wilt implementeren voor profilering. Als je een apparaat hebt aangesloten via USBbut zie je het niet vermeld, zorg er dan voor dat je USB-foutopsporing hebt ingeschakeld.
-
klik ergens in de CPU-tijdlijn om de CPU-Profiler te openen.
wanneer u de CPU-Profiler opent, wordt onmiddellijk de CPUusage-en thread-activiteit van uw app weergegeven. Je zou iets moeten zien dat lijkt op Figuur 1.
figuur 1. Tijdlijnen in de CPU Profiler.
zoals aangegeven in figuur 1, bevat de standaardweergave voor de CPU-Profiler de volgende tijdlijnen:
- Event timeline: Toont de activiteiten in uw app tijdens de overgang door verschillende toestanden in hun levenscyclus, en geeft gebruikersinteracties met het apparaat aan, inclusief schermrotatiegebeurtenissen. Zie geavanceerde profilering inschakelen voor informatie over het inschakelen van de tijdlijn voor gebeurtenissen op apparaten met Android 7.1 (API level 25) en lager.
- CPU-tijdlijn: toont real-time CPU-gebruik van uw app—als een percentage van de totale beschikbare CPU—tijd-en het totale aantal threads dat uw app gebruikt. De tijdlijn toont ook het CPU-gebruik van andere processen (zoals systeemprocessen of andere apps), zodat u het kunt vergelijken met het gebruik van uw app. U kunt Historische CPU-gebruiksgegevens inspecteren door uw muis langs de horizontale as van de tijdlijn te bewegen.
- thread activity timeline: toont elke thread die bij uw app-proces hoort en geeft hun activiteit aan langs een tijdlijn met behulp van de onderstaande kleuren. Nadat u een trace hebt vastgelegd, kunt u een thread uit deze tijdlijn selecteren om de gegevens ervan te inspecteren in het deelvenster traceren.
- groen: de thread is actief of is klaar om de CPU te gebruiken. Dat wil zeggen, het is in een lopende of uitvoerbare staat.
- geel: de thread is actief, maar wacht op een I/O-operatie, zoals schijf-of netwerk-I/O, voordat het zijn werk kan voltooien.
- grijs: de thread slaapt en verbruikt geen CPU-tijd. Dit gebeurt soms wanneer de thread toegang nodig heeft tot een bron die nog niet beschikbaar is. Of de thread gaat in vrijwillige slaapstand, of de kernel zet de thread in slaap totdat de benodigde resource beschikbaar is.
de CPU—Profiler rapporteert ook CPU-gebruik van threads die Android Studio en het Android-platform aan uw app-proces toevoegen-zoals
JDWP
Profile Saver
Studio:VMStats
Studio:Perfa
, enStudio:Heartbeat
(hoewel de exacte namen weergegeven in de thread activiteit tijdlijn kunnen variëren). Android Studio rapporteert deze gegevens, zodat u kunt identificeren wanneer thread-activiteit en CPU-gebruik daadwerkelijk worden veroorzaakt door de code van uw app.
record traces
om een trace op te nemen, kiest u een opnameconfiguratie uit een van de vervolgkeuzemenu ‘ s boven of onder de CPU-Profiler en klikt u op Opnemen.
Figuur 2. De CPU Profiler toont de status, de duur en het type opname dat wordt gemaakt.
interactie met uw app en klik vervolgens op Stoppen als u klaar bent. Theprofiler toont automatisch zijn tracing-informatie in het trace-paneel, zoals weergegeven in figuur 3:
Figuur 3. De CPU Profiler na het opnemen van amethod trace.
- geselecteerd bereik: bepaalt het gedeelte van de opgenomen tijd dat moet worden geïnspecteerd in het traceervenster. Wanneer u voor het eerst een trace opneemt, selecteert de CPU-Profiler automatisch de volledige lengte van uw opname in de CPU-tijdlijn. Sleep de randen van het gemarkeerde gebied om traceergegevens te inspecteren voor slechts een deel van het opgenomen tijdbereik.
- sectie interactie: toont gebruikersinteractie en app lifecycle gebeurtenissen langs een tijdlijn.
- Threads sectie: toont thread status activiteit (zoals lopen, slapen, enz.) en Call Chart (of trace event chart in System Trace) voor elke thread langs een tijdlijn.
- gebruik sneltoetsen om door de tijdlijn te navigeren.
- Dubbelklik op de threadnaam of druk op Enter terwijl een thread is geselecteerd om een thread uit te vouwen of in te klappen.
- selecteer een thread om aanvullende informatie in het deelvenster analyse te zien. Houd Shift of Ctrl ingedrukt (Command on Mac) om meerdere threads te selecteren.
- selecteer een methodeaanroep (of trace-gebeurtenis in System Trace) om aanvullende informatie in het deelvenster analyse te zien.
- Analysepaneel: Geeft traceergegevens weer voor het tijdsbereik en de thread-of methodeoproep die u hebt geselecteerd. In dit deelvenster kunt u selecteren hoe u elke stack-trace wilt bekijken (met behulp van de tabbladen analyse) en hoe u de uitvoeringstijd wilt meten (met behulp van het keuzemenu tijdreferentie).
- tabbladen analyse: kies hoe tracedetails worden weergegeven. Zie sporen inspecteren voor meer informatie over elke optie.
- tijdreferentiemenu: selecteer een van de volgende opties om te bepalen hoe tijdsinformatie voor elke oproep wordt gemeten (alleen ondersteund in Sample / Trace Java-methoden):
- Wandklok tijd: Timing informatie vertegenwoordigt de werkelijke verstreken tijd.
- Thread time: Timing-informatie vertegenwoordigt de werkelijke verstreken tijd minus een deel van die tijd wanneer de thread geen CPU-bronnen verbruikt. Voor een bepaalde oproep is de draadtijd altijd kleiner dan of gelijk aan de tijd van de wandklok. Het gebruik van thread time geeft je een beter inzicht in hoeveel van het werkelijke CPU-gebruik van een thread wordt verbruikt door een bepaalde methode of functie.
- Filter: filtert traceergegevens op functie, methode, klasse of pakketnaam. Als u bijvoorbeeld snel traceringsgegevens met betrekking tot een specifieke oproep wilt identificeren, typt u de naam in het zoekveld. Op het tabblad Vlamdiagram worden oproepstacks met een oproep, pakket of klasse die overeenkomt met de zoekopdracht benadrukt. In de top-down en Bottom-up tabbladen, die oproepstacks worden voorrang gegeven boven andere trace resultaten. U kunt ook de volgende opties inschakelen door het juiste vakje naast het zoekveld aan te vinken:
- Regex: gebruik deze optie om reguliere expressies in uw zoekopdracht op te nemen.
- Match case: als uw zoekopdracht hoofdlettergevoelig is, gebruik dan deze optie.
- inzoomen: druk op W of scroll met het muiswiel terwijl u Ctrl (Command on Mac) ingedrukt houdt.
- uitzoomen: druk op S of schuif het muiswiel achteruit terwijl u CTRL ingedrukt houdt (Command on Mac).
- Pan links: Druk op een of sleep de muis naar rechts terwijl u de spatie vasthoudt.
- Pan rechts: Druk op D of sleep de muis naar links terwijl u de spatie vasthoudt.
- een thread uitvouwen of samenvouwen: Dubbelklik op de threadnaam of druk op Enter terwijl een thread is geselecteerd.
Kies een opnameconfiguratie
voordat u begint met het opnemen van trace-informatie, kiest u de juiste opnameconfiguratie voor de profileringsinformatie die u wilt vastleggen:
- voorbeeld van Java-methoden: legt de oproepstack van uw app regelmatig vast tijdens het uitvoeren van Java-gebaseerde code in uw app. De profiler vergelijkt sets van vastgelegde gegevens om timing en informatie over het gebruik van bronnen af te leiden over de Java-gebaseerde code uitvoering van uw app.
een inherent probleem van gesampled-based tracing is dat als uw app een methode invoert na een capture van de call stack en de methode verlaat voor de volgende capture, die methode aanroep niet wordt gelogd door de profiler. Als u geïnteresseerd bent in traceermethoden met dergelijke korte levenscycli, moet u gebruik maken van geïnstrumenteerde tracing.
- traceer Java-methoden: instrumenten Uw app tijdens runtime om een tijdstempel op te nemen aan het begin en het einde van elke methodeaanroep. Tijdstempels worden verzameld en vergeleken om methode tracing gegevens te genereren, met inbegrip van timing informatie en CPU-gebruik.
merk op dat de overheadkosten die verbonden zijn aan het instrumenteren van elke methode van invloed zijn op de runtime-prestaties en de profileringsgegevens kunnen beïnvloeden; dit is nog meer merkbaar voor methoden met relatief korte levenscycli. Bovendien, als uw app voert een groot aantal methoden in een korte tijd, de profiler kan snel de limiet van de bestandsgrootte overschrijden en kan niet in staat zijn om verdere tracing gegevens op te nemen.
- Sample C / C++ functies: vangt gesamplede sporen van de native threads van uw app. Als u deze configuratie wilt gebruiken, moet u uw app implementeren op een apparaat met Android 8.0 (API level 26) of hoger.
intern gebruikt deze configuratie
simpleperf
om de native code van uw app te traceren. Als u extra opties wilt opgeven voorsimpleperf
, zoals sampling specifieke apparaat CPU ‘ s of het specificeren van sampling duur met een hoge nauwkeurigheid, kunt usimpleperf
vanaf de opdrachtregel gebruiken. - traceer systeemaanroepen: legt fijnkorrelige details vast waarmee u kunt controleren hoe uw app samenwerkt met systeembronnen. U kunt de exacte tijden en duur van uw threadstatussen inspecteren, visualiseren waar uw CPU-knelpunten zich in alle cores bevinden en aangepaste trace-gebeurtenissen toevoegen om te analyseren. Dergelijke informatie kan cruciaal zijn wanneer u problemen met de prestaties oplost. Als u deze configuratie wilt gebruiken, moet u uw app implementeren op een apparaat met Android 7.0 (API level 24) of hoger.
tijdens het gebruik van deze traceerconfiguratie kunt u belangrijke coderoutines visueel markeren in de tijdlijn van de profiler door uw code te instrumenteren. Voor het instrument C/C++ code, gebruik de native tracing API geleverd door
trace.h
. Voor het instrument Java code, gebruik deTrace
klasse. Zie Instrument uw app-code voor meer informatie.deze trace configuratie is gebouwd op
systrace
. U kunt het opdrachtregelprogrammasystrace
gebruiken om opties op te geven die verder gaan dan die welke in de CPU-Profiler worden gegeven. De extra gegevens op systeemniveau die worden geleverd doorsystrace
kunnen u helpen bij het inspecteren van systeemeigen processen en het oplossen van gevallen of vertraagde frames.Op apparaten met Android 9 (API level 28) of hoger kunt u een systeem-app genaamd Systeemtracing gebruiken om systeemsporen op een apparaat op te nemen.
een opnameconfiguratie aanmaken, bewerken of weergeven
u maakt, bewerkt en bekijkt opnameconfiguraties in het dialoogvenster CPU-Opnameconfiguraties, dat u opent door configuraties bewerken te selecteren in het vervolgkeuzemenu opnameconfiguraties bovenaan de CPU-Profiler.
om de instellingen van een bestaande opnameconfiguratie te bekijken, selecteert u deze in het linkerdeelvenster van het dialoogvenster CPU-Opnameconfiguraties.
om een nieuwe opnameconfiguratie aan te maken, doet u het volgende:
- klik op Add linksboven in het dialoogvenster. Dit maakt een nieuwe configuratie met enkele standaard instellingen.
- geef uw configuratie een naam.
- selecteer een Trace-technologie.
- voor bemonsterde registratieconfiguraties, specificeer het Bemonsteringsinterval in microseconden (µs). Deze waarde vertegenwoordigt de tijd tussen elk voorbeeld van uw app call stack. Hoe korter het interval dat u opgeeft, hoe sneller u de limiet voor de bestandsgrootte voor de opgenomen gegevens bereikt.
- specificeer de limiet van de bestandsgrootte, in megabytes (MB), voor de opgenomen gegevens die naar het aangesloten apparaat zijn geschreven. Wanneer u stopt met opnemen, analyseert AndroidStudio deze gegevens en geeft deze weer in het profiler-venster. Dus, als je de limiet te verhogen en een grote hoeveelheid gegevens op te nemen, Android Studio duurt veel langer om het bestand te ontleden en kan niet meer reageren.
Opmerking: Als u een verbonden apparaat gebruikt met Android 8.0 (API level 26) of hoger, is er geen limiet op de bestandsgrootte van de trace data, en deze waarde wordt genegeerd. Echter, je moet nog steeds voorzichtig zijn over hoeveel datathe apparaat verzamelt na elke opname-Android Studio kan moeilijkparsing grote trace-bestanden. Als u bijvoorbeeld een sampledtrace met een korte sampleinterval of een geïnstrumenteerde trace opneemt terwijl uw app binnen korte tijd vele methoden gebruikt, genereert u snel grote tracebestanden.
- als u de wijzigingen wilt accepteren en doorgaan met het aanbrengen van wijzigingen in andere configuraties,klikt u op Toepassen. Als u alle toegepaste wijzigingen wilt accepteren en het dialoogvenster wilt sluiten, klikt u op OK.
Registreer CPU-activiteit met de Debug API
u kunt de Debug
API gebruiken om uw app de mogelijkheid te geven om de opname van CPU-activiteit in de CPU-Profiler te starten en te stoppen.
de CPU-Profiler begint met opnemen wanneer uw app aanroeptstartMethodTracing(String tracePath)
,en de CPU-Profiler stopt met opnemen wanneer uw app aanroeptstopMethodTracing()
. Terwijl het opnemen van CPU-activiteit die is geactiveerd met behulp van deze API, de CPU profiler showsDebug API als de actieve CPU-opname configuratie.
om de opname van CPU-activiteit te beheren met de Debug
API, implementeert u uw geïnstrumenteerde app op een apparaat met Android 8.0 (API level 26) of hoger.
belangrijk: deDebug
API is bedoeld om afzonderlijk te worden gebruikt van andere middelen voor het starten en stoppen van de opname van CPU-activiteit, zoals de knoppen in de grafische gebruikersinterface van de CPU-Profiler en de instelling in de opnameconfiguratie voor automatische opname op appstartup.
vanwege de limiet van de buffergrootte van 8 MB is de startMethodTracing(String tracePath)
methode in de Debug
API ontworpen voor korte intervallen of scenario ‘ s die moeite hebben om de opname handmatig te starten / stoppen. Voor langere perioden van opname, gebruik de profiler UI in Android Studio.
voor meer informatie, zie trace logs genereren door het instrumenteren van uw app.
Registreer CPU-activiteit tijdens het opstarten van een app
om de CPU-activiteit automatisch op te nemen tijdens het opstarten van een app, Doe het volgende:
- selecteer Uitvoeren > Instellingen bewerken.
- Vink op het tabblad profilering het vakje aan naast het opnemen van een methodtrace bij het opstarten starten.
- selecteer een CPU-opnameconfiguratie in het menu.
- klik op Toepassen.
- implementeer uw app naar een apparaat met Android 8.0 (API level 26) of hoger door > profiel uitvoeren.
Export traces
nadat u CPU-activiteit hebt vastgelegd met de CPU-profiler, kunt u de gegevens exporteren als asa .trace
bestand om te delen met anderen of later te inspecteren.
Als u een trace-bestand wilt exporteren vanuit de CPU-tijdlijn, doet u het volgende::
- in de CPU-tijdlijn klikt u met de rechtermuisknop op de opgenomen method trace of system Trace die u wilt exporteren.
- selecteer trace exporteren in het menu.
- blader naar waar u het bestand wilt opslaan, geef de bestandsnaam op en klik op OK.
als u een trace-bestand wilt exporteren vanuit het deelvenster sessies, doet u het volgende:
- in het deelvenster sessies klikt u met de rechtermuisknop op de opgenomen trace die u wilt exporteren.
- klik op de Export method trace of Export system trace knop bij het openen van de sessie.
- blader naar waar u het bestand wilt opslaan, geef de bestandsnaam op en klik op OK.
importeer traces
u kunt .trace
bestanden importeren die zijn aangemaakt met deDebug
API of CPU Profiler.
Importeer uw trace-bestand door te klikken op nieuwe profilersessie starten in het deelvenster sessies van de profiler en vervolgens Bestand laden te selecteren.
u kunt een geïmporteerde trace in de CPU-Profiler inspecteren, net als met traces die direct in de CPU-Profiler zijn vastgelegd, met de volgende uitzonderingen:
- CPU-activiteit wordt niet weergegeven langs de CPU-tijdlijn (behalve in Systeemtrace).
- de tijdlijn in de Threads-sectie toont geen threadstatussen zoals lopen, wachten of slapen (behalve in System Trace).
inspecteer traces
De trace-weergave in de CPU-Profiler biedt verschillende manieren om informatie te bekijken van geregistreerde traces.
voor method traces en function traces kunt u het Aanroepschema direct bekijken in de Threads-tijdlijn en het Vlamdiagram, van boven naar beneden en onder naar boven in het Analysevenster. Voor systeemtraces kunt u de Traceergebeurtenissen rechtstreeks bekijken in de tijdlijn van discussies en het vlamdiagram, van boven naar beneden en van onder naar boven in het Analysepaneel.
muis-en toetsenbordsnelkoppelingen zijn beschikbaar voor het eenvoudig navigeren van Oproepdiagrammen of Traceergebeurtenissen.
sporen inspecteren met behulp van de Aanroepdiagram
De Aanroepdiagram geeft een grafische weergave van een methode trace or function trace, waarbij de periode en timing van een aanroep wordt weergegeven op de horizontale as, en de callees worden weergegeven langs de verticale as. Calls tosystem API ’s worden weergegeven in oranje, calls naar uw app’ s eigen methoden worden weergegeven ingroen, en calls naar derden API ’s (met inbegrip van Java language API’ s) worden weergegeven inblauw. Figuur 4 toont een voorbeeld aanroepdiagram en illustreert het concept van zelftijd, kindertijd en Totale tijd voor een bepaalde methode of functie. U kunt meer leren over deze concepten in de sectie over hoe u sporen kunt inspecteren met behulp van Top Down en Bottom Up.
Figuur 4. Een voorbeeld aanroepdiagram dat zelf, kinderen en Totale tijd illustreert voor methode D.
Tip: Als u de broncode van een methode of functie wilt springen, klikt u er met de rechtermuisknop op en selecteert u naar Bron springen. Dit werkt vanuit elk van de tabbladen van het Analysepaneel.
sporen inspecteren met behulp van het tabblad Vlamdiagram
het tabblad Vlamdiagram biedt een omgekeerd aanroepdiagram dat identieke aanroepstacks samenbrengt. Dat wil zeggen, identieke methoden of functies die dezelfde volgorde van bellers delen worden verzameld en weergegeven als een langere balk in een zelfde grafiek (in plaats van ze weer te geven als meerdere kortere balken, zoals weergegeven in een call-grafiek). Dit maakt het makkelijker om te zien welke methoden of functies de meeste tijd verbruiken. Dit betekent echter ook dat de horizontale as niet atimeline vertegenwoordigt; in plaats daarvan geeft het de relatieve hoeveelheid tijd aan die elke methode of functie nodig heeft om uit te voeren.
om dit concept te illustreren, kunt u het oproepschema in Figuur 5 bekijken. Merk op dat methode D meerdere oproepen doet naar B (B1, B2, andB3), en dat sommige van die oproepen naar B een oproep doen naar C (C1 andC3).
Figuur 5. Een oproepgrafiek met meerdere methodeaanroependie een gemeenschappelijke reeks bellers delen.
omdat B1, B2 en B3 dezelfde volgorde van bellers hebben (A → D → B) worden ze geaggregeerd, zoals weergegeven in Figuur 6. Evenzo worden C1 en C3 geaggregeerd omdat zij dezelfde volgorde van bellers hebben (A → D → B → C); merk op dat C2 niet is opgenomen omdat het een andere volgorde van bellers heeft (A → D → C).
Figuur 6. Het samenvoegen van identieke methoden die dezelfde call stack delen.
de geaggregeerde aanroepen worden gebruikt om de vlamkaart te maken, zoals weergegeven in Figuur 7.Merk op dat, Voor een bepaalde oproep in een vlamkaart, de callees die de meeste CPU-tijd verbruiken als eerste verschijnen.
Figuur 7. Een vlamkaart weergave van de callchart getoond in Figuur 5.
sporen inspecteren met behulp van Top-Down en Bottom-Up
het tabblad Top-Down toont een lijst met aanroepen waarin het uitvouwen van een methode-of functielijn de callees weergeeft. Figuur 8 toont een top-down grafiek voor de callchart in Figuur 4. Elke pijl in de grafiek wijst van een beller naar een callee.
zoals getoond in figuur 8, het uitbreiden van de knoop voor Methode A in de Top-Down tabd toont zijn callees, methoden B en D. daarna, het uitbreiden van de knoop voor methodD onthult zijn callees, methoden B en C, enzovoort. Vergelijkbaar met de vlam charttab, de top down boom aggregaten trace-informatie voor identieke methoden die dezelfde call stack. Dat wil zeggen, de vlam grafiek tab biedt een grafische weergave van de Top-down tab.
De Top-Down tabblad bevat de volgende informatie te helpen beschrijven CPUtime besteed aan elk gesprek (tijden worden ook weergegeven als percentage van thethread de totale tijd over het geselecteerde bereik):
- Zelf: de tijd van de methode of functie-aanroep bracht het uitvoeren van de eigen codeand niet die van haar callees, zoals geïllustreerd in figuur 4 voor de methode D.
- Kinderen: de tijd van de methode of functie-aanroep besteed uitvoeren van itscallees en niet zijn eigen code, zoals geïllustreerd in figuur 4 voor de methode D.
- Totaal: de som van de methode Zelf en de Kinderen de tijd. Dit is de totale tijd die de app besteedde aan het uitvoeren van een aanroep, zoals geïllustreerd in infigure 4 Voor methode D.
Figuur 8. Een Top Down boom.
figuur 9. Een bottom-Up boom voor methode C uit figuur 8.
het onderste tabblad toont een lijst met oproepen waarin het uitvouwen van een functie of het knooppunt van Method de bellers toont. Met behulp van het voorbeeld trace getoond in figuur 8,figuur 9 biedt een bottom-up boom voor methode C. Het openen van het knooppunt voor methode Cin de bottom up boom toont elk van zijn unieke bellers, methoden B en D. Notetethat, hoewel B roept C twee keer, B verschijnt slechts één keer bij het uitbreiden van het knooppunt formethod C in de bottom up boom. Daarna, het uitbreiden van de node voor B displaysits beller, methoden A en D.
het onderste tabblad is nuttig voor het sorteren van methoden of functies door degenen die de meeste (of minst) CPU tijd. U kunt elk knooppunt inspecteren om te bepalen welke bellers de meeste CPU-tijd besteden aan het aanroepen van deze methoden of functies.Vergeleken met de top down boom, timing info voor elke methode of functie in abottom up boom is een verwijzing naar de methode aan de bovenkant van elke boom (top node).CPU-tijd wordt ook weergegeven als een percentage van de totale thread tijd duringthat opname. In de volgende tabel wordt uitgelegd hoe de tijdinformatie voor het bovenste knooppunt en zijn bellers (subknooppunten) moet worden geïnterpreteerd.
Zelf | Kinderen | Totaal | |
---|---|---|---|
Methode of functie aan de top van de bottom-up-boom (bovenste knooppunt) | geeft de totale tijd van de methode of functie bracht het uitvoeren van zijn eigen code, en niet die van de callees. Vergeleken met de top down Boom, deze timing informatie vertegenwoordigt een som van alle oproepen naar deze methode of functie over de duur van de opname. | geeft de totale tijd weer die de methode of functie besteedt aan het uitvoeren van zijn callees en niet aan zijn eigen code. Vergeleken met de top down Boom, deze timing informatie vertegenwoordigt de som van alle oproepen naar deze methode of functie callees over de duur van de opname. | de som van de zelftijd en kindertijd. |
bellers (sub-nodes) | vertegenwoordigt de totale zelftijd van de oproep wanneer deze door de beller wordt aangeroepen. Met behulp van de bottom-up boom in figuur 9 als voorbeeld, zou de zelftijd voor Methode B gelijk zijn aan de som van de zelftijden voor elke uitvoering van methode C wanneer aangeroepen door B. | geeft de totale kindertijd van de callee weer wanneer deze door de beller wordt aangeroepen. Met behulp van de onderste boom in figuur 9 als voorbeeld, zou de kindertijd voor Methode B gelijk zijn aan de som van de kindertijd voor elke uitvoering van methode C wanneer aangeroepen door B. | de som van de zelftijd en kindertijd. |
opmerking: Voor een bepaalde opname stopt Android Studio met het verzamelen van nieuwe gegevens wanneer de profiler de limiet voor Bestandsgrootte bereikt (dit stopt echter niet met opnemen). Dit gebeurt meestal veel sneller bij het uitvoeren vangestrumenteerde sporen omdat dit type tracing meer gegevens verzamelt in een kortere tijd, in vergelijking met een bemonsterde spoor. Als u de inspectietijd verlengt tot een periode van de registratie die plaatsvond na het bereiken van de limiet, veranderen de tijdgegevens in het trace-paneel niet (omdat er geen nieuwe gegevens beschikbaar zijn). Bovendien geeft het trace-Paneel NaN weer voor tijdinformatie wanneer u alleen het gedeelte van een opname selecteert dat geen gegevens beschikbaar heeft.
inspecteer systeemsporen
bij het inspecteren van een systeemtrace kunt u Trace-gebeurtenissen in de threads-tijdlijn bekijken om de details van de gebeurtenissen op elke thread te bekijken.Beweeg met uw muisaanwijzer over een gebeurtenis om de naam van het evenement en de tijd die in elke staat wordt doorgebracht te zien. Klik op een gebeurtenis om meer informatie te zien in het deelvenster analyse.
het deelvenster CPU-kernen (zoals weergegeven in Figuur 10) toont threadactiviteit die op elke kern is gepland. Beweeg uw muisaanwijzer over een thread activiteit om te zien op welke thread deze kern draait op dat specifieke moment.
Figuur 10. Het bekijken van CPU-activiteit en trace gebeurtenissen voor de render thread.
voor aanvullende informatie over het inspecteren van systeemtrace-informatie, zie de sectie UI performance problems van de systrace
documentatie.
inspecteer frame rendering data
u kunt inspecteren hoe lang het met uw app duurt om elk frame op de mainthread te renderen en RenderThread
om knelpunten te onderzoeken die UI jank en lowframerates veroorzaken.
om frame rendering data te zien,neemt u een trace op met behulp van een configuratie waarmee U systeem aanroepen kunt traceren. Na het opnemen van de trace, kijk voor informatie over elk frame onder de Frames tijdlijn in de weergave sectie, zoals weergegeven in Figuur 11.
Figuur 11. Elk frame dat langer duurt dan 16msis in het rood weergegeven.