Traceview: τι είναι, εργαλείο ιχνηλάτησης και προφίλ Android

Συγγραφέας: IT Sectr Δημοσιεύτηκε: 2026-03-30 Χρόνος ανάγνωσης: 9 λεπ

Traceview este un εργαλείο de ιχνηλάτησης grafică ενσωματωμένο στο Android Studio care καταγράφει și vizualizează εκτέλεση μεθόδων εφαρμογής din punct de vedere al χρόνου și πόρων CPU. Spre deosebire de Systrace, care arată procesele sistemice la nivel de πυρήνα, Traceview se concentrează pe metodele Java și Kotlin din interiorul εφαρμογής, apelate în lanț de la intrarea χρήστη până la απόδοση UI. Σύμφωνα Google, 2024, εργαλείοul permite găsirea blocajelor de performanță la nivelul apelurilor individuale și optimizarea codului înainte de lansare.

Κύρια σημεία

  • Traceview — profilerul grafic al μεθόδων Android στο Android Studio, bazat pe System Tracing
  • Ιχνηλάτηση καταγράφει durata fiecărei metode, numărul de apeluri și timpul CPU
  • Timeline-ul Traceview afișează apelurile în ordine cronologică cu ierarhizarea thread-urilor
  • Δημιουργία προφίλ ajută la găsirea μεθόδων lente, alocărilor inutile și blocajelor
  • Ενταξη cu Android Profiler și API-ul Debug.startMethodTracing pentru capturare flexibilă

Τι είναι Traceview στο Android

Traceview este un profiler grafic ενσωματωμένο στο Android Studio care afișează urmele de execuție ale μεθόδων εφαρμογής Android sub formă de timeline și tabel de apeluri. Face parte din Android SDK și este accesibil prin Android Profiler începând cu Android Studio 3.0, precum și prin utilitarul de linie de comandă dmtracedump.

Scopul εργαλείοului

Sarcina principală a Traceview este de a ajuta dezvoltatorul să găsească metodele care consumă cel mai mult timp CPU. Spre deosebire de logarea simplă, Traceview καταγράφει timpul exact de intrare și ieșire din fiecare metodă, construiește Call Chart și arborele Top-Down, permițând detectarea vizuală a anomaliilor de performanță. Instrumentul este util în special la profilarea thread-ului UI, unde o întârziere de 16 ms duce la pierderea cadrelor.

Istorie și dezvoltare

Traceview a apărut în versiunile timpurii ale Android SDK ca un utilitar autonom pentru vizualizarea fișierelor .trace. Odată cu lansarea Android Studio 3.0 (2017) a devenit parte din Android Profiler, primind integrare cu timeline-ul live al CPU, memoriei și rețelei. Σύμφωνα Google I/O 2018, echipa Android Studio continuă să dezvolte profilerul, adăugând suport pentru cod nativ prin systrace și perfetto. În versiunile actuale de Android Studio, Traceview funcționează pe baza formatului Perfetto, dar păstrează compatibilitatea inversă cu .trace clasic.

Πώς λειτουργεί Traceview

Traceview primește datele de la mecanismul System Tracing din Android Runtime (ART). Când aplicația este pornită cu ιχνηλάτησηςa activată, ART καταγράφει în buffer timestamp-ul de început și sfârșit al fiecărei metode executate, inclusiv numele clasei, numele metodei și ID-ul thread-ului.

kotlin
// Έναρξη ιχνηλάτησης στον κώδικα της εφαρμογής
Debug.startMethodTracing("app_trace")

// Κρίσιμο τμήμα κώδικα για προφίλ
loadHeavyData()

// Διακοπή ιχνηλάτησης — το αρχείο αποθηκεύτηκε στη συσκευή
Debug.stopMethodTracing()

System Tracing funcționează la nivelul mașinii virtuale ART și καταγράφει fiecare apel de metodă cu o precizie de microsecunde. Δεδομέναle sunt scrise într-un buffer circular pentru a minimiza impactul asupra performanței εφαρμογής. După oprirea trasării, bufferul este salvat într-un fișier .trace pe stocarea internă a dispozitivului.

Formatul fișierului .trace

Fișierul .trace conține un antet cu versiunea formatului și timpul de start, urmat de înregistrări despre fiecare apel: thread ID, method ID, timestamp de intrare și timestamp de ieșire. Android Studio încarcă automat fișierul .trace și construiește două vizualizări principale: Timeline Panel pentru cronologie și Profile Panel pentru ierarhia apelurilor. În mod implicit, dimensiunea maximă a bufferului este de 8 MB, dar poate fi mărită prin Debug.startMethodTracing(filename, maxSize).

Caracteristicile cheie ale Traceview

Traceview oferă mai multe vizualizări complementare ale datelor, fiecare rezolvând propria sarcină în analiza performanței.

Call Chart (graficul apelurilor)

Call Chart este un timeline orizontal, unde fiecare thread este afișat pe o pistă separată. Metodele sunt reprezentate ca dreptunghiuri colorate: lățimea dreptunghiului este proporțională cu timpul de execuție, iar ierarhizarea reflectă ierarhia apelurilor. Dacă o metodă a apelat o altă metodă, dreptunghiul copil este desenat în interiorul celui părinte. Această vizualizare permite identificarea imediată a operațiilor care au blocat thread-ul.

Arborii Top-Down și Bottom-Up

Arborele Top-Down arată timpul de execuție al metodei cu luarea în considerare a tuturor apelurilor sale imbricate — Inclusive Time. Arborele Bottom-Up, dimpotrivă, arată ce metode părinte au apelat această metodă — util pentru găsirea sursei unei operații grele. Diferența dintre Inclusive și Exclusive Time este critică: o metodă poate funcționa rapid, dar poate apela o metodă copil lentă, iar acest lucru este vizibil doar în Inclusive Time.

Căutare și filtrare

Traceview suportă căutarea după numele metodei, pachet sau clasă. Rezultatele sunt evidențiate pe timeline, iar în Profile Panel se afișează statistici doar pentru metodele găsite. De asemenea, este disponibilă filtrarea după thread-uri — se poate dezactiva afișarea thread-urilor de fundal și concentrarea pe thread-ul principal (UI), unde întârzierile sunt cele mai critice.

ΜετρικήΠεριγραφήΜονάδα
Inclusive TimeTimpul total al metodei + al tuturor apelurilor sale copilμs / ms
Exclusive TimeTimpul doar al metodei fără apelurile copilμs / ms
Calls + RecurNumărul de apeluri cu luarea în considerare a recursiuniinumăr
CPU TimeTimpul real petrecut pe CPU (fără așteptare)μs / ms
Real TimeTimpul calendaristic de la intrarea până la ieșirea din metodăμs / ms

Exportul datelor

Traceview permite exportarea urmelor în format CSV pentru analiză ulterioară în tabele sau construirea de γραφικής. În Android Studio se poate copia și un fragment selectat din timeline ca imagine — pentru inserare în raport de eroare sau documentație. Pentru CI/CD este disponibil exportul în format Perfetto prin utilitarul cmdline-tools.

Πώς να χρησιμοποιήσετε Traceview στο Android Studio

Δημιουργία προφίλ prin Traceview este disponibilă în două moduri: prin Android Profiler cu capturare live și prin pornirea programatică a Debug API. Prima metodă este convenabilă pentru analiza ad-hoc, a doua — pentru teste de performanță reproductibile.

Capturarea prin Android Profiler

În Android Studio deschideți fila Profiler (View → Tool Windows → Profiler), selectați dispozitivul și procesul εφαρμογής dvs. Faceți clic pe segmentul CPU, apoi selectați modul "Trace Java Methods" și apăsați Record. După interacțiunea cu aplicația, apăsați Stop — Traceview va deschide automat urma înregistrată. Διάρκεια înregistrării implicite este limitată la 30 de secunde, dar limita poate fi modificată în setările profilerului.

Pornirea programatică a trasării

Pentru profilarea precisă a unei secțiuni specifice de cod, utilizați Debug.startMethodTracing și Debug.stopMethodTracing. Fișierul este salvat în stocarea externă a εφαρμογής pe calea returnată de context.getExternalFilesDir(null). După finalizare, transferați fișierul .trace pe computer prin Android Studio Device Explorer, apoi deschideți-l prin File → Open στο Android Studio.

kotlin
Debug.startMethodTracing(
    "heavy_computation",
    Debug.TRACE_COUNT_ALLOCS
)

processLargeDataset()

Debug.stopMethodTracing()

Configurarea parametrilor de ιχνηλάτησης

Debug.startMethodTracing acceptă trei parametri: numele fișierului (fără extensie), dimensiunea maximă a bufferului (implicit 8 MB) și flag-uri. Flag-ul TRACE_COUNT_ALLOCS adaugă numărarea alocărilor de obiecte — util pentru găsirea scurgerilor de memorie. Pentru profilarea codului nativ, Traceview nu este potrivit — utilizați SimplePerf sau Perfetto. Pentru teste lungi (peste 30 de secunde) se recomandă mărirea bufferului la 64–128 MB prin parametrul maxSize.

Ανάγνωση χρονογραμμής Traceview

Timeline-ul Traceview constă din două panouri: cel superior — Timeline Panel cu dreptunghiuri colorate ale apelurilor, cel inferior — Profile Panel cu tabelul de statistici. Timeline Panel arată εκτέλεση thread-urilor de la stânga la dreapta, unde fiecare dreptunghi reprezintă un apel de metodă. Culoarea dreptunghiului este codificată în funcție de tipul metodei: apeluri de sistem Android (verde), metode aplicative (albastru), apeluri de biblioteci (portocaliu).

Cum să citiți Profile Panel

În Profile Panel, fiecare rând este o metodă cu coloanele Inclusive Time, Exclusive Time, Calls + Recur și CPU Time. Sortați tabelul după Inclusive Time (descrescător) pentru a vedea primele metodele care au ocupat cel mai mult timp în total. Dacă o metodă cu Inclusive Time ridicat are Exclusive Time scăzut — problema este în apelurile sale copil și trebuie să desfaceți arborele. De exemplu, ListView.getView poate avea Inclusive Time ridicat din cauza apelului de încărcare a imaginii.

Identificarea blocajelor

Căutați metode cu Real Time anormal de ridicat și CPU Time scăzut — aceasta indică o blocare (așteptare I/O, operație de rețea, lock contention). Metodele cu CPU Time ridicat necesită optimizarea algoritmului. Pentru thread-ul UI este critic ca fiecare metodă să se încadreze în 16 ms — dacă un apel depășește acest prag, aplicația pierde cadrul și utilizatorul vede tremur. Conform recomandărilor Google, timpul total al tuturor apelurilor în thread-ul UI pentru un cadru nu trebuie să depășească 8–10 ms, lăsând rezervă pentru operațiile sistemice.

Traceview vs Systrace: compararea εργαλείοelor

Deși atât Traceview, cât și Systrace aparțin εργαλείοelor de ιχνηλάτησης Android, ele rezolvă sarcini diferite și sunt utilizate în etape diferite de profilare. Diferența principală este nivelul de detaliu: Traceview funcționează la nivelul μεθόδων Java/Kotlin, Systrace — la nivelul proceselor sistemice (CPU, GPU, Binder, SurfaceFlinger).

ΚριτήριοTraceviewSystrace
ΕπίπεδοMetode (Java/Kotlin)Procese sistemice (CPU/GPU/IO)
ΔιεπαφήAndroid Studio ProfilerLinie de comandă + raport HTML
ΔεδομέναInclusive/Exclusive TimeÎncărcare CPU, frecvență cadre
ΔιάρκειαPână la 30 sec (Profiler), nelimitat (API)Până la 60 secunde
Εγγενής κώδικαςΔεν υποστηρίζειSuportă prin σημάνια atrace

În practică, ambele εργαλείοe se completează reciproc: mai întâi Systrace ajută la determinarea componentului de sistem care cauzează problema (de exemplu, GC frecvente sau blocări Binder), apoi Traceview permite aprofundarea într-o metodă specifică din interiorul εφαρμογής. În Android Studio, ambele εργαλείοe sunt unite în Android Profiler — CPU Profiler selectează automat modul optim de înregistrare. Pe dispozitivele cu Android 12+, Systrace și Traceview funcționează pe baza Perfetto, oferind un format unic de date pentru toate tipurile de profilare.

Exemple de cod cu Traceview

Pentru o profilare eficientă, nu este suficient să porniți doar ιχνηλάτησηςa — trebuie să plasați corect punctele de capturare și să interpretați rezultatele. Mai jos sunt prezentate două exemple practice: profilarea listei RecyclerView și compararea a doi algoritmi într-un test de performanță.

Δημιουργία προφίλ încărcării RecyclerView

Primul exemplu — ιχνηλάτησηςa căii critice la derularea listei. RecyclerView apelează onBindViewHolder pentru fiecare element vizibil, iar dacă această metodă se execută mai mult de 16 ms, derularea devine sacadată. Ιχνηλάτηση în jurul onBindViewHolder va arăta ce operații exacte din interiorul său ocupă timp.

kotlin
class MyAdapter : RecyclerView.Adapter<ViewHolder>() {
    override fun onBindViewHolder(
        holder: ViewHolder,
        position: Int
    ) {
        Debug.startMethodTracing("bind_card_$position")

        holder.bind(items[position])

        Debug.stopMethodTracing()
    }
}

Compararea a doi algoritmi

Al doilea exemplu — testul A/B al vitezei a două implementări: încărcarea imaginilor prin Glide versus BitmapFactory manual. O astfel de urmă permite compararea obiectivă a Inclusive Time a ambelor strategii și alegerea celei optime. Este important să rulați fiecare test pe un dispozitiv preîncălzit (după 3–5 cicluri) și în condiții identice (sarcină de fundal, temperatură).

kotlin
fun compareImageLoadingStrategies() {
    // Δοκιμή A: Glide
    Debug.startMethodTracing("glide_test")
    loadWithGlide()
    Debug.stopMethodTracing()

    // Δοκιμή B: BitmapFactory
    Debug.startMethodTracing("bitmap_test")
    loadWithBitmapFactory()
    Debug.stopMethodTracing()
}

După lansare, deschideți ambele fișiere .trace στο Android Studio și comparați Inclusive Time în Profile Panel. Dacă Glide arată un Inclusive Time de 3x mai mic pentru aceeași sarcină — aceasta este o bază obiectivă pentru a alege biblioteca. Σύμφωνα lui Tony John (dezvoltatorul Glide, 2023), biblioteca utilizează cache și pool de thread-uri, oferind un câștig de până la 40% la încărcările repetate.

Συχνές Ερωτήσεις

Cu ce se deosebește Traceview de Android Profiler?

Traceview este πυρήναl de vizualizare a urmelor din interiorul Android Profiler. Profilerul oferă o interfață suplimentară pentru pornirea și oprirea înregistrării, în timp ce Traceview se ocupă de afișarea χρονογραμμής și a statisticilor μεθόδων. Ambele folosesc același format de date .trace.

Se poate folosi Traceview pe un dispozitiv fizic?

Da, Traceview funcționează atât pe emulator, cât și pe un dispozitiv fizic Android. Pentru aceasta, depanarea USB trebuie să fie activată, iar aplicația construită în modul debuggable. Pe dispozitivul fizic, datele sunt mai precise, deoarece emulatorul poate distorsiona timpii din cauza virtualizării.

Care este dimensiunea maximă a fișierului .trace?

Dimensiunea maximă implicită este de 8 MB, dar poate fi mărită până la 256 MB prin parametrul maxSize în Debug.startMethodTracing. Pentru sesiuni lungi de profilare, utilizați Perfetto, care nu are o limită strictă pentru dimensiunea urmei.

De ce Traceview nu afișează metodele native?

Traceview funcționează la nivelul Android Runtime (ART) și vede doar metodele gestionate Java și Kotlin. Pentru profilarea codului nativ (C/C++ prin JNI), utilizați SimplePerf sau Perfetto cu FTrace, care capturează apelurile sistemice la nivel de πυρήνα.

Cum să deschideți un fișier .trace fără Android Studio?

Utilizați utilitarul dmtracedump din Android SDK (dosarul platform-tools). Acesta generează un raport HTML cu timeline și statistici sub formă de tabel. Pe Windows, lansare: dmtracedump -h trace.trace > report.html. Alternativa — Perfetto UI (ui.perfetto.dev), care suportă importul formatului .trace.

Περίληψη

  • Traceview — profilerul grafic al μεθόδων Android pentru analiza performanței στο Android Studio
  • Instrumentul funcționează la nivelul ART și καταγράφει Inclusive și Exclusive Time fiecărei metode Java/Kotlin
  • Două vizualizări principale: Call Chart pentru timeline și Profile Panel pentru statistici ierarhice
  • Capturarea este disponibilă prin Android Profiler (UI) sau programatic prin Debug.startMethodTracing
  • Pentru thread-ul UI, fiecare metodă trebuie să se încadreze în 16 ms, altfel aplicația pierde cadre
  • Traceview nu este potrivit pentru cod nativ — utilizați SimplePerf sau Perfetto
  • Se recomandă combinarea Traceview și Systrace pentru o imagine completă a performanței

Θα αναπτύξουμε μια εφαρμογή για κινητά έτοιμη για χρήση

Η IT Sectr δημιουργεί εφαρμογές iOS και Android για νεοφυείς επιχειρήσεις και επιχειρήσεις από το 2017. Θα σας συμβουλεύσουμε και θα προτείνουμε την καλύτερη λύση.

Συζήτηση έργου

Διαβάστε επίσης