Traceview — Android Studio-ya daxil edilmiş qrafik izləmə alətidir, tətbiq metodlarının icrasını zaman və CPU resursları baxımından qeyd edir və vizuallaşdırır. Sistematik prosesləri nüvə səviyyəsində göstərən Systrace-dən fərqli olaraq, Traceview istifadəçi girişindən UI renderinə qədər zəncir boyunca çağırılan tətbiq daxilindəki Java və Kotlin metodlarına fokuslanır. Google, 2024 məlumatlarına görə, alət fərdi çağırışlar səviyyəsində performans darboğazlarını tapmağa və buraxılışa qədər kodu optimallaşdırmağa imkan verir.
Əsas məqamlar
Traceview — Android Studio-ya daxil edilmiş qrafik profilləşdiricidir, Android tətbiq metodlarının icra izlərini zaman xətti və çağırış cədvəli şəklində göstərir. Android SDK-nın tərkib hissəsidir və Android Studio 3.0-dan başlayaraq Android Profiler, həmçinin dmtracedump komanda sətri aləti vasitəsilə əlçatandır.
Traceview-in əsas vəzifəsi proqramçıya ən çox CPU vaxtı sərf edən metodları tapmağa kömək etməkdir. Sadə loglamadan fərqli olaraq, Traceview hər bir metodun giriş və çıxış dəqiq vaxtını qeyd edir, Call Chart və Top-Down ağacı qurur ki, bu da vizual olaraq performans anomaliyalarını aşkar etməyə imkan verir. Alət xüsusilə UI ipini profilləşdirərkən faydalıdır, burada 16 ms gecikmə kadrın itirilməsinə səbəb olur.
Traceview Android SDK-nın ilk versiyalarında .trace fayllarına baxmaq üçün müstəqil alət kimi meydana çıxdı. Android Studio 3.0 (2017) buraxılışı ilə Android Profiler-in bir hissəsi oldu, CPU, yaddaş və şəbəkənin canlı zaman xətti ilə inteqrasiya qazandı. Google I/O 2018 məlumatlarına görə, Android Studio komandası systrace və perfetto vasitəsilə yerli kod dəstəyi əlavə edərək profilləşdiricini inkişaf etdirməyə davam edir. Android Studio-nun cari versiyalarında Traceview Perfetto formatı üzərində işləyir, lakin klassik .trace ilə geriyə uyğunluğu qoruyur.
Traceview Android Runtime (ART) daxilində System Tracing mexanizmindən məlumat alır. Tətbiq izləmə aktivləşdirilmiş halda işə salındıqda, ART hər bir icra olunan metodun başlanğıc və bitmə vaxtı stampını, o cümlədən sinif adı, metod adı və ip ID-sini buferə yazır.
// Tətbiq kodunda tracing-i başlat
Debug.startMethodTracing("app_trace")
// Profilləşdirmə üçün kritik kod bölməsi
loadHeavyData()
// Tracing-in dayandırılması — fayl cihaza saxlanılıb
Debug.stopMethodTracing()
System Tracing ART virtual maşını səviyyəsində işləyir və hər bir metod çağırışını mikrosaniyə dəqiqliyi ilə qeyd edir. Məlumatlar tətbiqin öz performansına təsiri minimuma endirmək üçün dairəvi buferə yazılır. İzləmə dayandırıldıqdan sonra bufer cihazın daxili yaddaşında .trace faylına boşaldılır.
.trace faylı format versiyası və başlanğıc vaxtı ilə başlıq ehtiva edir, ardınca hər bir çağırış haqqında qeydlər gəlir: thread ID, method ID, giriş vaxtı stampı və çıxış vaxtı stampı. Android Studio avtomatik olaraq .trace faylını yükləyir və iki əsas görünüş qurur: xronologiya üçün Timeline Panel və çağırış iyerarxiyası üçün Profile Panel. Standart olaraq maksimum bufer ölçüsü 8 MB-dır, lakin Debug.startMethodTracing(filename, maxSize) vasitəsilə artırıla bilər.
Traceview bir-birini tamamlayan bir neçə məlumat görünüşü təqdim edir, hər biri performans analizində öz vəzifəsini həll edir.
Call Chart — üfüqi zaman xəttidir, burada hər bir ip ayrı yolda göstərilir. Metodlar rəngli düzbucaqlılar şəklində göstərilir: düzbucaqlının eni icra müddətinə mütənasibdir, yuvalanma isə çağırış iyerarxiyasını əks etdirir. Əgər metod başqa bir metodu çağırıbsa, alt düzbucaqlı valideyn daxilində çəkilir. Bu vizuallaşdırma hansı əməliyyatların ipi blokladığını dərhal görməyə imkan verir.
Top-Down ağacı metodun bütün yuvalanmış çağırışları ilə icra müddətini göstərir — Inclusive Time. Bottom-Up ağacı isə əksinə, bu metodu hansı valideyn metodların çağırdığını göstərir — ağır əməliyyatın mənbəyini tapmaq üçün faydalıdır. Inclusive və Exclusive Time arasındakı fərq kritikdir: metod özü sürətli işləyə bilər, lakin yavaş alt metodu çağıra bilər və bu yalnız Inclusive Time-da görünür.
Traceview metod adı, paket və ya sinif üzrə axtarışı dəstəkləyir. Nəticələr zaman xəttində vurğulanır, Profile Panel-də isə yalnız tapılan metodlar üzrə statistika göstərilir. İplər üzrə filtrləmə də mövcuddur — fon iplərinin göstərilməsini söndürüb gecikmələrin ən kritik olduğu əsas (UI) ipinə diqqət yetirmək olar.
| Metrika | Təsvir | Vahid |
|---|---|---|
| Inclusive Time | Metodun + bütün alt çağırışlarının ümumi vaxtı | μs / ms |
| Exclusive Time | Yalnız metodun öz vaxtı, alt çağırışlar olmadan | μs / ms |
| Calls + Recur | Rekursiya nəzərə alınmaqla çağırış sayı | ədəd |
| CPU Time | CPU-da həqiqətən sərf olunan vaxt (gözləməsiz) | μs / ms |
| Real Time | Metoda girişdən çıxışa qədər təqvim vaxtı | μs / ms |
Traceview izləri CSV formatında ixrac etməyə imkan verir — cədvəllərdə sonrakı analiz və ya qrafiklərin qurulması üçün. Android Studio-da zaman xəttinin seçilmiş fraqmentini şəkil kimi köçürmək də mümkündür — bug-report və ya sənədləşdirməyə yapışdırmaq üçün. CI/CD üçün cmdline-tools vasitəsilə Perfetto formatında ixrac mövcuddur.
Profilləşdirmə Traceview vasitəsilə iki yolla mümkündür: Android Profiler ilə canlı tutma və Debug API-nin proqram vasitəsilə işə salınması. Birinci üsul ad-hoc analiz üçün əlverişlidir, ikincisi — təkrarlana bilən performans testləri üçün.
Android Studio-da Profiler nişanını açın (View → Tool Windows → Profiler), cihazı və tətbiqinizin prosesini seçin. CPU seqmentinə klikləyin, sonra "Trace Java Methods" rejimini seçin və Record düyməsini basın. Tətbiq ilə qarşılıqlı əlaqədən sonra Stop düyməsini basın — Traceview avtomatik olaraq qeydə alınmış izi açacaq. Standart yazma müddəti 30 saniyə ilə məhdudlaşır, lakin limit profilləşdirici parametrlərində dəyişdirilə bilər.
Kodun konkret hissəsinin dəqiq profilləşdirilməsi üçün Debug.startMethodTracing və Debug.stopMethodTracing istifadə edin. Fayl context.getExternalFilesDir(null)-un qaytardığı yolda tətbiqin xarici yaddaşında saxlanılır. Tamamlandıqdan sonra .trace faylını Android Studio Device Explorer vasitəsilə kompüterə köçürün, sonra Android Studio-da File → Open vasitəsilə açın.
Debug.startMethodTracing(
"heavy_computation",
Debug.TRACE_COUNT_ALLOCS
)
processLargeDataset()
Debug.stopMethodTracing()
Debug.startMethodTracing üç parametr qəbul edir: fayl adı (genişləndirməsiz), maksimum bufer ölçüsü (standart 8 MB) və bayraqlar. TRACE_COUNT_ALLOCS bayrağı obyekt ayırmalarının sayılmasını əlavə edir — yaddaş sızmalarını tapmaq üçün faydalıdır. Yerli kodu profilləşdirmək üçün Traceview uyğun deyil — SimplePerf və ya Perfetto istifadə edin. Uzun testlər (30 saniyədən çox) üçün buferi maxSize parametri ilə 64–128 MB-a qədər artırmaq tövsiyə olunur.
Traceview zaman xətti iki paneldən ibarətdir: yuxarı — rəngli çağırış düzbucaqlıları ilə Timeline Panel, aşağı — statistika cədvəli ilə Profile Panel. Timeline Panel iplərin icrasını soldan sağa göstərir, burada hər düzbucaqlı bir metod çağırışıdır. Düzbucaqlının rəngi metod növünə görə kodlaşdırılır: Android sistem çağırışları (yaşıl), tətbiq metodları (mavi), kitabxana çağırışları (narıncı).
Profile Panel-də hər sətir Inclusive Time, Exclusive Time, Calls + Recur və CPU Time sütunları olan bir metoddur. Cədvəli Inclusive Time-a görə (azalan) sıralayın ki, ən çox vaxt aparan metodları ilk görmək üçün. Əgər yüksək Inclusive Time olan metod aşağı Exclusive Time-a malikdirsə — problem onun alt çağırışlarındadır və ağacı genişləndirmək lazımdır. Məsələn, ListView.getView şəkil yükləmə çağırışı səbəbindən yüksək Inclusive Time-a malik ola bilər.
Aşağı CPU Time ilə anormal yüksək Real Time olan metodları axtarın — bu bloklamanı (I/O gözləmə, şəbəkə əməliyyatı, lock contention) göstərir. Yüksək CPU Time olan metodlar alqoritmin optimallaşdırılmasını tələb edir. UI ipi üçün hər metodun 16 ms-ə sığması kritikdir — əgər hansısa çağırış bu həddi keçərsə, tətbiq kadrı itirir və istifadəçi sıçrayış görür. Google tövsiyələrinə görə, bir kadr üçün UI ipində bütün çağırışların ümumi vaxtı 8–10 ms-dən çox olmamalıdır, sistem əməliyyatları üçün ehtiyat qalmalıdır.
Həm Traceview, həm də Systrace Android izləmə alətlərinə aid olsa da, onlar müxtəlif vəzifələri həll edir və profilləşdirmənin müxtəlif mərhələlərində istifadə olunur. Əsas fərq təfərrüat səviyyəsidir: Traceview Java/Kotlin metodları səviyyəsində, Systrace isə sistem prosesləri (CPU, GPU, Binder, SurfaceFlinger) səviyyəsində işləyir.
| Meyar | Traceview | Systrace |
|---|---|---|
| Səviyyə | Metodlar (Java/Kotlin) | Sistem prosesləri (CPU/GPU/IO) |
| İnterfeys | Android Studio Profiler | Komanda sətri + HTML hesabat |
| Məlumat | Inclusive/Exclusive Time | CPU yükü, kadr tezliyi |
| Müddət | 30 san (Profiler), limitsiz (API) | 60 saniyəyə qədər |
| Yerli kod | Dəstəkləmir | atrace işarələri ilə dəstəkləyir |
Praktikada hər iki alət bir-birini tamamlayır: əvvəlcə Systrace hansı sistem komponentinin problem yaratdığını müəyyən etməyə kömək edir (məsələn, tez-tez GC və ya Binder bloklamaları), sonra Traceview tətbiq daxilində konkret metoda dərindən baxmağa imkan verir. Android Studio-da hər iki alət Android Profiler-də birləşdirilib — CPU Profiler avtomatik olaraq optimal yazma rejimini seçir. Android 12+ olan cihazlarda Systrace və Traceview Perfetto üzərində işləyir ki, bu da bütün profilləşdirmə növləri üçün vahid məlumat formatı verir.
Səmərəli profilləşdirmə üçün sadəcə izləməni işə salmaq kifayət deyil — tutma nöqtələrini düzgün yerləşdirmək və nəticələri şərh etmək lazımdır. Aşağıda iki praktiki nümunə verilmişdir: RecyclerView siyahısının profilləşdirilməsi və performans testində iki alqoritmin müqayisəsi.
Birinci nümunə — siyahının sürüşdürülməsi zamanı kritik yolun izlənməsi. RecyclerView hər görünən element üçün onBindViewHolder çağırır və əgər bu metod 16 ms-dən uzun icra olunarsa, sürüşdürmə sıçrayışlı olur. onBindViewHolder ətrafında izləmə onun daxilində hansı əməliyyatların vaxt apardığını göstərəcək.
class MyAdapter : RecyclerView.Adapter<ViewHolder>() {
override fun onBindViewHolder(
holder: ViewHolder,
position: Int
) {
Debug.startMethodTracing("bind_card_$position")
holder.bind(items[position])
Debug.stopMethodTracing()
}
}
İkinci nümunə — iki tətbiqin sürət A/B testidir: Glide vasitəsilə şəkil yükləmə əl ilə BitmapFactory ilə müqayisədə. Belə bir iz hər iki strategiyanın Inclusive Time-nı obyektiv müqayisə etməyə və optimalını seçməyə imkan verir. Hər testi isidilmiş cihazda (3–5 dövrədən sonra) və eyni şəraitdə (fon yükü, temperatur) işə salmaq vacibdir.
fun compareImageLoadingStrategies() {
// Test A: Glide
Debug.startMethodTracing("glide_test")
loadWithGlide()
Debug.stopMethodTracing()
// Test B: BitmapFactory
Debug.startMethodTracing("bitmap_test")
loadWithBitmapFactory()
Debug.stopMethodTracing()
}
İşə saldıqdan sonra hər iki .trace faylını Android Studio-da açın və Profile Panel-də Inclusive Time-nı müqayisə edin. Əgər Glide eyni tapşırıqda 3x az Inclusive Time göstərirsə — bu kitabxananı seçmək üçün obyektiv əsasdır. Toni Conun məlumatlarına görə (Glide yaradıcısı, 2023), kitabxana keşləmə və ip hovuzundan istifadə edir ki, bu da təkrarlanan yükləmələrdə 40%-ə qədər qazanc verir.
Tez-tez verilən suallar
Traceview — Android Profiler daxilində iz vizuallaşdırmasının nüvəsidir. Profiler yazmağı işə salmaq və dayandırmaq üçün əlavə interfeys təqdim edir, Traceview isə zaman xətti və metod statistikasının göstərilməsinə cavabdehdir. Hər ikisi eyni .trace məlumat formatından istifadə edir.
Bəli, Traceview həm emulyatorda, həm də fiziki Android cihazında işləyir. Bunun üçün USB sazlaması aktiv olmalı və tətbiq debuggable rejimində yığılmalıdır. Fiziki cihazda məlumatlar daha dəqiqdir, çünki emulyator virtualizasiya səbəbindən vaxtları təhrif edə bilər.
Standart maksimum ölçü 8 MB-dır, lakin Debug.startMethodTracing-də maxSize parametri ilə 256 MB-a qədər artırıla bilər. Uzun profilləşdirmə sessiyaları üçün iz ölçüsünə sərt məhdudiyyəti olmayan Perfetto istifadə edin.
Traceview Android Runtime (ART) səviyyəsində işləyir və yalnız idarə olunan Java və Kotlin metodlarını görür. Yerli kodu (JNI vasitəsilə C/C++) profilləşdirmək üçün nüvə səviyyəsində sistem çağırışlarını tutan SimplePerf və ya Perfetto FTrace istifadə edin.
Android SDK-dan (platform-tools qovluğu) dmtracedump alətindən istifadə edin. O, zaman xətti və cədvəl şəklində statistika ilə HTML hesabatı yaradır. Windows-da işə salma: dmtracedump -h trace.trace > report.html. Alternativ — .trace formatını idxal edən Perfetto UI (ui.perfetto.dev).
Nəticə
Açar təslim mobil tətbiq hazırlayacağıq
IT Sectr 2017-ci ildən startaplar və bizneslər üçün iOS və Android tətbiqləri yaradır. Sizə məsləhət verəcəyik və ən yaxşı həlli təklif edəcəyik.
Həm də oxuyun