Mobil inkişafda Profiling: mahiyyəti, metrikalar və alətlər

Müəllif: IT Sectr Dərc olunub: 2026-03-30 Oxuma vaxtı: 9 dəq

Profiling (profilləşdirmə) — tətbiqin performansının əsas metrikalar üzrə ölçülməsi prosesidir: CPU yükü, yaddaş istehlakı, şəbəkə trafiki və enerji sərfiyyatı. Profilləşdirmənin məqsədi tətbiqi ləngidən və ya həddindən artıq resurs istehlakına səbəb olan darboğazları tapmaqdır. Android Developers məlumatlarına görə, inkişaf mərhələsində müntəzəm profilləşdirmə istehsalatda performans səhvlərinin sayını 60% azaldır və hətta zəif cihazlarda belə hamar interfeysi qorumağa kömək edir.

Əsas məqamlar

  • Profiling — darboğazları tapmaq üçün CPU, Memory, Network və Energy ölçülməsi.
  • CPU profilləşdirməsi hansı metodların və iplərin prosessoru yüklədiyini göstərir.
  • Yaddaş profilləşdirməsi sızmaları, obyekt dublikatlarını və qeyri-optimal alokasiyaları aşkarlayır.
  • Şəbəkə profilləşdirməsi server sorğularının ölçüsünü və vaxtını izləyir.
  • Enerji profilləşdirməsi batareyanın boşalmasını sürətləndirən əməliyyatları müəyyən edir.

Mobil inkişafda profilləşdirmə nədir?

Profiling — tətbiqin işi haqqında məlumatların toplanması və təhlilidir: hansı funksiyalar yerinə yetirilir, nə qədər vaxt aparır, nə qədər yaddaş sərf edir və şəbəkə ilə necə qarşılıqlı əlaqədə olur. Logging-dən fərqli olaraq, profilləşdirmə sistem səviyyəsində işləyir və subyektiv qiymətləndirmələr deyil, dəqiq rəqəmsal metrikalar verir.

Profilləşdirmənin əsas məqsədi resurslardan qeyri-optimal istifadə edən kod hissələrini tapmaqdır. Bunlar UI ipində çağrılan yavaş metodlar, yaddaş sızmaları, səmərəsiz SQL sorğuları, həddindən artıq şəbəkə çağırışları və ya həddindən artıq enerji sərfiyyatı ola bilər. Profilləşdirmə olmadan tərtibatçılar real məlumatlara deyil, «yavaş görünən» şeylərə əsaslanaraq düzəlişlər edirlər.

Google I/O 2023 məlumatlarına görə, inkişaf mərhələsində müntəzəm profilləşdirmədən keçən tətbiqlər 40% daha az ANR (Application Not Responding) xətası və 50% daha az OutOfMemory səbəbindən çökmə göstərir. Profilləşdirmə alətləri bütün müasir IDE-lərə — Android üçün Android Studio Profiler və iOS üçün Xcode Instruments-a daxildir.

Profilləşdirmə statik (kodu işə salmadan təhlil — lint, Detekt) və dinamik (tətbiqin işləməsi zamanı ölçmələr) ola bilər. Real performans problemlərini tapmaq üçün cihazda və ya emulyatorda tətbiqin faktiki davranışını göstərən dinamik profilləşdirmə istifadə olunur.

Nə vaxt profilləşdirmə aparmaq lazımdır

Profilləşdirmə hər böyük buraxılışdan əvvəl, ağır UI komponentləri (siyahılar, animasiyalar, xüsusi View) tətbiq edilərkən, istifadəçilərin yavaşlama və batareyanın boşalması ilə bağlı şikayətləri olduqda, həmçinin tətbiqin arxitekturası dəyişdirildikdən sonra zəruridir. Sistemli yanaşma — hər sprintdə profilləşdirmə aparın, metrikaların baseline-nı qeydə alın.

CPU profilləşdirməsi: darboğazları necə tapmaq olar

CPU profilləşdirməsi hansı metodların və iplərin prosessoru yüklədiyini və hər çağırışın icrasının nə qədər vaxt apardığını izləyir. Əsas vəzifə gözləniləndən daha uzun işləyən və UI ipini bloklayaraq kadr düşməsinə (jank) və ANR-yə səbəb olan funksiyaları tapmaqdır.

Android CPU Profiler-də Top-Down tree — çağırışlar ağacı göstərilir, burada müəyyən bir ip kontekstində hansı metodun ən uzun icra olunduğunu görmək olar. iOS Instruments Time Profiler seçmə prinsipi ilə işləyir: bərabər vaxt intervallarında (məsələn, 1 ms) sistem hər ipin çağırış stack-nı qeyd edir. Seçmə statistikasına əsasən hansı kodun ən çox vaxt apardığı müəyyən edilir.

kotlin
// Nümunə: jank-a səbəb olan yavaş metod
class UserAdapter : RecyclerView.Adapter<UserViewHolder>() {

    override fun onBindViewHolder(holder: UserViewHolder, position: Int) {
        // ❌ Bu metod UI ipində çağırılır və renderləməni bloklayır
        // Profilləşdirmə göstərəcək ki, decompressImage vaxtın 80%-ni tutur
        val user = getItem(position)
        val bitmap = ImageUtils.decompressImage(user.avatar)
        holder.avatarView.setImageBitmap(bitmap)
    }
}

CPU profilləşdirməsi zamanı yüksək Self Time olan metodlara diqqət yetirmək lazımdır — bu, metodun uşaq metod çağırışları istisna olmaqla öz işinə sərf etdiyi vaxtdır. UI ipində metodun Self Time 16 ms-dən çox olarsa — bu, 60 FPS ekranda kadrın buraxılmasına zəmanət verir. Həll yolu — ağır əməliyyatları fon ipinə köçürməkdir.

Yaddaş profilləşdirməsi: sızmaların axtarışı və optimallaşdırma

Yaddaş profilləşdirməsi tətbiqin nə qədər yaddaş istifadə etdiyini izləyir: hansı obyektlər yaradılır, nə qədər yaşayır və nə vaxt sərbəst buraxılır. Əsas vəzifə sızmaları (mövcud olmamalı, lakin yaddaşda qalan obyektlər) və həddindən artıq alokasiyaları (çox tez-tez yaradılan obyektlər) tapmaqdır.

Android Memory Profiler-də real vaxtda RAM istehlakı qrafiki, bütün alokasiya edilmiş obyektlərin siyahısı və hər növ üzrə təfərrüatlar göstərilir. Əsas metrikalar: Java Heap (JVM yığınındakı obyektlər), Native Heap (C/C++ səviyyəsində alokasiyalar), Graphics Memory (Qrafik yaddaş — GPU teksturları və buferləri). iOS Instruments Allocations oxşar metrikaları göstərir: Heap Allocations (yığındakı obyektlər) və Anonymous VM (virtual yaddaş səhifələri).

MetrikaAndroid ProfilerInstruments (iOS)
Yığın obyektləriJava Heap + Native HeapHeap Allocations
QrafikGraphics MemoryVM Tracker
SızmalarMemory Profiler + LeakCanaryLeaks instrument
Yığın dump-ıHPROF (Capture)Heapshot

Yaddaş profilləşdirməsi zamanı tipik istifadəçi ssenarilərindən sonra yığın dump-ı götürmək vacibdir: ekranı açmaq və bağlamaq, siyahını yükləmək, şəkillərlə işləmək. İki dump-ın (ssenaridən əvvəl və sonra) müqayisəsi hansı obyektlərin sərbəst buraxılmadığını göstərəcək. Activity obyektlərinin sayı artıbsa, lakin ekran bağlanıbsa — bu sızmadır.

HPROF dump-ını necə interpretasiya etməli

Android Studio-da dump-ı Memory Profiler vasitəsilə açın: obyektləri Retained Size-ə görə çeşidləyin (nə qədər böyükdürsə, obyekt bir o qədər çox yaddaş saxlayır). Yaddaşda olmamalı olan Activity, Fragment və Bitmap nümunələrini axtarın. Əgər belə bir obyekt varsa — onu nəyin saxladığını görmək üçün Reference Tree-yə keçin.

Şəbəkə profilləşdirməsi: trafik və gecikmə analizi

Şəbəkə profilləşdirməsi tətbiqin bütün HTTP sorğularını izləyir: URL, cavab ölçüsü, icra müddəti, cavab kodları və başlıqlar. Əsas məqsəd çox vaxt aparan, həddindən artıq məlumat ötürən və ya lazımsız yerə çağırılan sorğuları tapmaqdır.

Android Network Profiler-də bütün şəbəkə çağırışlarının zaman xətti, onların müddəti və ötürülən məlumatların ölçüsü göstərilir. Hər sorğu tam başlıqları və cavab məzmununu görmək üçün açıla bilər. iOS Instruments Network oxşar tapşırıqlar üçün URL Loading System monitorinqindən istifadə edir və sorğuların waterfall diaqramını göstərir.

Şəbəkə profilləşdirməsinin aşkarladığı tipik problemlər: keşləmənin olmaması (eyni JSON ekran hər açıldıqda yüklənir), təkrarlanan sorğular (bir neçə komponent eyni vaxtda eyni məlumatları tələb edir), böyük cavablar (server 5 MB JSON göndərir, halbuki 100 KB lazımdır). Hər problem üçün standart həll yolu var: OkHttp və ya URLSession vasitəsilə keşləməni konfiqurasiya edin, Combine və ya Flow vasitəsilə abunəlikləri birləşdirin, server tərəfdə paginasiya əlavə edin.

Xüsusi diqqət ilk bayta (TTFB — Time To First Byte) yetirin. Əgər yaxşı əlaqədə TTFB 500 ms-dən çox olarsa — problem server tərəfindədir. Əgər sorğunun özü sürətli, lakin JSON-un pars edilməsi saniyələr çəkirsə — problem deserializasiyadadır və onu ayrıca profilləşdirmək lazımdır.

Enerji profilləşdirməsi: enerji sərfiyyatının analizi

Enerji profilləşdirməsi tətbiqin batareya səviyyəsinə necə təsir etdiyini ölçür. Bu, nisbətən yeni profilləşdirmə növüdür, lakin mobil tətbiqlər üçün kritik əhəmiyyət daşıyır — istifadəçilər telefonu həddindən artıq boşaldan tətbiqləri silirlər. Android Studio-da Energy Profiler və Instruments-da Energy Log hansı əməliyyatların (Wi-Fi, GPS, CPU, Bluetooth) hər an enerji sərf etdiyini göstərir.

Mobil tətbiqlərdə əsas enerji istehlakçıları: WakeLock (prosessoru aktiv vəziyyətdə saxlamaq), GPS Location (koordinatların davamlı yenilənməsi), şəbəkə sorğuları (xüsusilə mobil şəbəkədə 4G/5G), fondakı animasiyalar. Energy Profiler tətbiq hadisələrini enerji istehlakı miqyasının üzərinə qoyur — qrafikdə sıçrayış varsa, onu hansı əməliyyatın törətdiyini dəqiq müəyyən etmək olar.

Apple WWDC 2023 məlumatlarına görə, tətbiqin enerji istehlakının 20% azaldılması istifadəçi retensiyasını 12% artırır, çünki istifadəçilər batareyanı güclü boşaldan tətbiqləri silməyə meyllidirlər. Tövsiyə — GPS, fon sinxronizasiyası və striminq ssenarilərini sınaqdan keçirərkən həmişə Energy Profiler-i aktivləşdirin.

iOS və Android üçün profilləşdirmə alətləri

Alətin seçimi platformadan və profilləşdirmə növündən asılıdır. Android üçün əsas dəst — Android Studio Profiler (CPU, Memory, Network, Energy), LeakCanary (yaddaş sızmaları) və Perfetto (nüvə səviyyəsində sistem profilləşdirməsi). iOS üçün — Xcode Instruments Time Profiler, Allocations, Leaks, Energy Log, Network və Core Animation şablonları dəsti ilə.

Flutter-də çoxplatformalı inkişaf üçün DevTools modullarından istifadə olunur: Timeline (CPU), Memory, Network və Debugger. React Native üçün — React DevTools və Facebook-un Flipper aləti, şəbəkə, verilənlər bazası və UI iyerarxiyasının inspeksiyasını dəstəkləyir. Freymvorkdan asılı olmayaraq, profilləşdirmənin əsas prinsipləri universaldır: optimallaşdırmadan əvvəl və sonra ölçün, baseline-ı qeydə alın, hər kod dəyişikliyində metrikaları müqayisə edin.

Müasir yanaşmalara CI-da avtomatlaşdırılmış profilləşdirmə daxildir. Android Firebase Test Lab UI testləri ilə birlikdə performans ölçmələrini dəstəkləyir: siz testlərin pass/fail nəticələrini yox, həm də hər iterasiya üçün CPU, Memory və Network qrafiklərini alırsınız. iOS üçün analoji funksionallıq GitHub Actions ilə XCUITest və Instruments CLI vasitəsilə təmin edilir.

Doğru aləti necə seçməli

Bir metrikanı tez yoxlamaq üçün IDE-nin daxili profilerindən istifadə edin. Sızmaların kompleks təhlili üçün — ixtisaslaşmış alətlər (LeakCanary, Instruments Leaks). Sürücü səviyyəsində sistem profilləşdirməsi üçün — Perfetto (Android) və ya DTrace (macOS). İki-üç alətin birləşməsi profilləşdirmə ssenarilərinin 95%-ni əhatə edir.

Tez-tez verilən suallar

Profilləşdirmə logging-dən nə ilə fərqlənir?

Logging hadisələrin ardıcıllığını mətn şəklində göstərir, profilləşdirmə isə kəmiyyət metrikaları verir — kodun hər fraqmentinin nə qədər vaxt, yaddaş, prosessor və şəbəkə sərf etdiyini. Profilləşdirmə «nə qədər çox» sualına, logging isə «nə baş verdi» sualına cavab verir.

Tətbiqi nə qədər tez-tez profilləşdirmək lazımdır?

Hər böyük buraxılışdan əvvəl, yeni ağır UI komponentləri tətbiq edilərkən və performansla bağlı şikayətlər olduqda profilləşdirmə aparmaq tövsiyə olunur. İdeal olaraq profilləşdirmə CI-ya daxil edilir və hər pull request-də avtomatik işə salınır.

Real cihazda profilləşdirmə etmək olarmı?

Bəli, hətta bu emulyatordan daha üstündür. Real cihaz konkret aparat məhdudiyyətlərini nəzərə alaraq faktiki performansı göstərir. Android Studio Profiler və Xcode Instruments qoşulmuş cihazda heç bir məhdudiyyət olmadan profilləşdirməni dəstəkləyir.

Profiler ölçmə nəticələrinə təsir edirmi?

Bəli, hər profiler overhead əlavə edir. Nümunə götürməyə əsaslanan CPU profilləşdirməsi üçün overhead 1–5% təşkil edir. Yığın dump-ı ilə yaddaş profilləşdirməsi üçün — dump anında 10% qədər. Müasir alətlər təsiri minimuma endirməyə çalışır, lakin nəticələri interpretasiya edərkən onu nəzərə almaq lazımdır.

Profilləşdirmədə baseline nədir?

Baseline — tətbiqin ilk stabil versiyasında götürülmüş istinad performans metrikalarıdır. Hər kod dəyişikliyində yeni metrikaları baseline ilə müqayisə edin. Əgər başlanğıc vaxtı baseline-a nisbətən 50 ms artıbsa — dəyişiklikləri birləşdirməzdən əvvəl səbəbi tapmaq lazımdır.

Nəticə

  • Profiling — CPU, Memory, Network və Energy darboğazlarını aşkarlamaq üçün mobil tətbiqlərin inkişafının məcburi mərhələsidir.
  • CPU profilləşdirməsi UI ipini bloklayan və kadr düşməsi və ANR-yə səbəb olan metodları tapır.
  • Yaddaş profilləşdirməsi HPROF dump-ları vasitəsilə sızmaları, dublikatları və qeyri-optimal alokasiyaları aşkarlayır.
  • Şəbəkə profilləşdirməsi yavaş, təkrarlanan sorğuları və keşləmənin olmamasını müəyyən edir.
  • Enerji profilləşdirməsi GPS, WakeLock və şəbəkə əməliyyatları vasitəsilə tətbiqin batareyaya təsirini izləyir.
  • Android üçün Android Studio Profiler + LeakCanary, iOS üçün Xcode Instruments istifadə edin.
  • Profilləşdirməni CI/CD-yə daxil edin və hər buraxılış üçün metrikaların baseline-nı qeydə alın.

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.

Layihəni müzakirə et

Həm də oxuyun