Profiling (profillash) mobil ishlanmada: mohiyati, metrikalari va vositalari

Muallif: IT Sectr Nashr etilgan: 2026-03-30 O'qish vaqti: 9 daq

Profiling (profillash) — bu ilovaning ishlashini asosiy metrikalar bo'yicha o'lchash jarayoni: CPU yuklamasi, xotira iste'moli, tarmoq trafigi va energiya iste'moli. Profillashning maqsadi — ilovani sekinlashtiradigan yoki haddan tashqari resurs iste'moliga sabab bo'ladigan tor joylarni topish. Android Developers ma'lumotlariga ko'ra, ishlanma bosqichida muntazam profillash produksiyadagi performance-bug'lar sonini 60% gacha kamaytiradi va hatto zaif qurilmalarda ham silliq UI ni saqlashga yordam beradi.

Asosiy

  • Profiling — tor joylarni topish uchun CPU, Memory, Network va Energy ni o'lchash.
  • CPU-profillash qaysi metodlar va threadlar protsessorni yuklayotganini ko'rsatadi.
  • Memory-profillash oqishlar, obyekt dublikatlari va optimal bo'lmagan alokatsiyalarni topadi.
  • Network-profillash serverga so'rovlarning hajmi va vaqtini kuzatadi.
  • Energy-profillash batareya zaryadini tezlatadigan operatsiyalarni aniqlaydi.

Mobil ishlanmada profillash nima?

Profiling — bu ilovaning ishi haqida ma'lumotlarni yig'ish va tahlil qilish: qaysi funksiyalar bajariladi, qancha vaqt oladi, qancha xotira sarflaydi va tarmoq bilan qanday aloqa qiladi. Logging dan farqli o'laroq, profillash tizim darajasida ishlaydi va subyektiv baholash emas, balki aniq raqamli metrikalarni beradi.

Profillashning asosiy maqsadi — resurslardan optimal foydalanmaydigan kod qismlarini topish. Bular UI-threadda chaqiriladigan sekin metodlar, xotira oqishlari, samarasiz SQL so'rovlari, ortiqcha tarmoq chaqiruvlari yoki haddan tashqari energiya iste'moli bo'lishi mumkin. Profillashsiz dasturchilar haqiqiy ma'lumotlarga tayanmasdan, "sekin ko'rinadigan" narsalarni tuzatadilar.

Google I/O 2023 ma'lumotlariga ko'ra, ishlanma bosqichida muntazam profillashdan o'tadigan ilovalar 40% kamroq ANR (Application Not Responding) xatoliklari va 50% kamroq OutOfMemory sababli qulashlarni ko'rsatadi. Profillash vositalari barcha zamonaviy IDE larga o'rnatilgan — Android uchun Android Studio Profiler va iOS uchun Xcode Instruments.

Profillash statik (kodsiz tahlil — lint, Detekt) va dinamik (ilova ishlash vaqtida o'lchash) bo'ladi. Haqiqiy ishlash muammolarini topish uchun dinamik profillash qo'llaniladi, u ilovaning qurilmadagi yoki emulyatordagi haqiqiy xatti-harakatini ko'rsatadi.

Qachon profillash kerak

Profillash har bir yirik relizdan oldin, og'ir UI komponentlarini (ro'yxatlar, animatsiyalar, maxsus View) joriy qilishda, foydalanuvchilarning sekinlashuv va batareya zaryadi haqidagi shikoyatlarida, shuningdek ilova arxitekturasi o'zgartirilgandan so'ng zarur. Tizimli yondashuv — har bir sprintda profillash o'tkazish, baseline metrikalarni qayd etish.

CPU-profillash: tor joylarni qanday topish

CPU-profillash qaysi metodlar va threadlar protsessorni yuklayotganini va har bir chaqiruvni bajarish qancha vaqt olishini kuzatadi. Asosiy vazifa — kutilganidan uzoqroq ishlaydigan va UI-threadni bloklab, kadr tushishiga (jank) va ANR ga sabab bo'ladigan funksiyalarni topish.

Android da CPU Profiler Top-Down tree — chaqiruvlar daraxtini ko'rsatadi, unda ma'lum bir thread kontekstida qaysi metod eng uzoq bajarilishini ko'rish mumkin. iOS da Instruments Time Profiler namuna olish printsipi asosida ishlaydi: teng vaqt oralig'ida (masalan, 1 ms) tizim har bir threadning chaqiruv stekini yozib oladi. Namunaviy statistika bo'yicha qaysi kod eng ko'p vaqt olishi aniqlanadi.

kotlin
// Misol: jank keltirib chiqaradigan sekin metod
class UserAdapter : RecyclerView.Adapter<UserViewHolder>() {

    override fun onBindViewHolder(holder: UserViewHolder, position: Int) {
        // ❌ Bu metod UI-threadda chaqiriladi va chizishni bloklaydi
        // Profillash decompressImage 80% vaqt olishini ko'rsatadi
        val user = getItem(position)
        val bitmap = ImageUtils.decompressImage(user.avatar)
        holder.avatarView.setImageBitmap(bitmap)
    }
}

CPU profillashda Self Time yuqori bo'lgan metodlarga e'tibor berish kerak — bu metodning o'z ishini bajarish vaqti, bolaviy metodlarni hisobga olmaganda. Agar UI-threaddagi metodning Self Time 16 ms dan oshsa — bu 60 FPS ekranda kadrni o'tkazib yuborishni kafolatlaydi. Yechim — og'ir operatsiyalarni fon threadiga o'tkazish.

Memory-profillash: oqishlarni qidirish va optimallashtirish

Memory-profillash ilova qancha xotira ishlatishini kuzatadi: qanday obyektlar yaratiladi, qancha yashaydi va qachon bo'shatiladi. Asosiy vazifa — oqishlar (mavjud bo'lmasligi kerak bo'lgan, lekin xotirada qoladigan obyektlar) va ortiqcha alokatsiyalarni (juda tez-tez yaratiladigan obyektlar) topish.

Android Memory Profiler real vaqtda RAM iste'moli grafigini, barcha alokatsiyalangan obyektlar ro'yxatini va har bir tur bo'yicha tafsilotlarni ko'rsatadi. Asosiy metrikalar: Java Heap (JVM kupyadagi obyektlar), Native Heap (C/C++ darajasidagi alokatsiyalar), Graphics Memory (teksturalar va GPU buferlari). iOS Instruments Allocations shunga o'xshash metrikalarni ko'rsatadi: Heap Allocations (kupyadagi obyektlar) va Anonymous VM (virtual xotira sahifalari).

MetrikaAndroid ProfilerInstruments (iOS)
Kupya obyektlariJava Heap + Native HeapHeap Allocations
GrafikaGraphics MemoryVM Tracker
OqishlarMemory Profiler + LeakCanaryLeaks instrument
Kupya dumpiHPROF (Capture)Heapshot

Memory-profillashda odatdagi foydalanuvchi ssenariylarini bajarganidan so'ng kupya dumpini olish muhim: ekranni ochish va yopish, ro'yxatni yuklash, tasvirlar bilan ishlash. Ikki dumpni (ssenariydan oldin va keyin) solishtirish qaysi obyektlar bo'shatilmaganligini ko'rsatadi. Agar Activity obyektlari soni oshgan bo'lsa, lekin ekran yopilgan bo'lsa — bu oqish.

HPROF dumpini qanday talqin qilish

Android Studio da dumpni Memory Profiler orqali oching: obyektlarni Retained Size bo'yicha saralang (qancha katta bo'lsa — obyekt shuncha ko'p xotirani ushlab turadi). Xotirada bo'lmasligi kerak bo'lgan Activity, Fragment va Bitmap namunalarini qidiring. Agar bunday obyekt mavjud bo'lsa — Reference Tree ga o'ting, uni nima ushlab turganini ko'rish uchun.

Network-profillash: trafik va kechikishlarni tahlil qilish

Network-profillash ilovaning barcha HTTP so'rovlarini kuzatadi: URL, javob hajmi, bajarilish vaqti, javob kodlari va sarlavhalar. Asosiy maqsad — juda ko'p vaqt oladigan, ortiqcha ma'lumotlarni uzatadigan yoki keraksiz chaqiriladigan so'rovlarni topish.

Android Network Profiler barcha tarmoq chaqiruvlarining vaqt shkalasini, ularning davomiyligi va uzatilgan ma'lumotlar hajmini ko'rsatadi. Har bir so'rovni to'liq sarlavhalar va javob tanasini ko'rish uchun ochish mumkin. iOS Instruments Network shu kabi vazifalar uchun URL Loading System monitoringidan foydalanadi va so'rovlarning waterfall-diagrammasini ko'rsatadi.

Network-profillash aniqlaydigan odatiy muammolar: keshlashning yo'qligi (bir xil JSON har safar ekran ochilganda yuklanadi), takrorlanuvchi so'rovlar (bir nechta komponentlar bir vaqtning o'zida bir xil ma'lumotlarni so'raydi), katta javoblar (server 5 MB JSON yuboradi, 100 KB kerak bo'lganda). Har bir muammo uchun standart yechim bor: OkHttp yoki URLSession orqali keshlashni sozlash, Combine yoki Flow orqali obunalarni birlashtirish, serverga paginatsiya qo'shish.

Birinchi baytga (TTFB — Time To First Byte) alohida e'tibor bering. Agar yaxshi ulanishda TTFB 500 ms dan oshsa — muammo server tomonda. Agar so'rovning o'zi tez bo'lsa, lekin JSON ni tahlil qilish soniyalar ketsa — muammo deserializatsiyada va uni alohida profillash kerak.

Energy-profillash: energiya iste'molini tahlil qilish

Energy-profillash ilovaning batareya zaryadiga qanday ta'sir qilishini o'lchaydi. Bu nisbatan yangi profillash turi, lekin mobil ilovalar uchun juda muhim — foydalanuvchilar telefonni haddan tashqari zaryadsizlantiradigan ilovalarni o'chirishadi. Android Studio dagi Energy Profiler va Instruments dagi Energy Log qaysi operatsiyalar (Wi-Fi, GPS, CPU, Bluetooth) har bir vaqtda energiya iste'mol qilishini ko'rsatadi.

Mobil ilovalarda energiyaning asosiy iste'molchilari: WakeLock (protsessorni faol holatda ushlab turish), GPS Location (doimiy koordinata yangilanishlari), tarmoq so'rovlari (ayniqsa 4G/5G mobil tarmog'ida), fondagi animatsiyalar. Energy Profiler ilova hodisalarini energiya iste'moli shkalasiga joylashtiradi — agar grafikda keskin o'sish bo'lsa, qaysi operatsiya buni keltirib chiqarganini aniq aniqlash mumkin.

Apple WWDC 2023 ma'lumotlariga ko'ra, ilovaning energiya iste'molini 20% ga kamaytirish foydalanuvchilarni ushlab qolishni 12% ga oshiradi, chunki foydalanuvchilar batareyani tez zaryadsizlantiradigan ilovalarni o'chirishga moyil. Tavsiya — GPS, fon sinxronizatsiyasi va striming bilan ssenariylarni sinashda har doim Energy Profiler ni yoqish.

iOS va Android uchun profillash vositalari

Vositani tanlash platforma va profillash turiga bog'liq. Android uchun asosiy to'plam — Android Studio Profiler (CPU, Memory, Network, Energy), LeakCanary (xotira oqishlari) va Perfetto (yadro darajasida tizim profillashi). iOS uchun — Xcode Instruments Time Profiler, Allocations, Leaks, Energy Log, Network va Core Animation shablonlari to'plami bilan.

Flutter da kross-platforma ishlanmasi uchun DevTools Timeline (CPU), Memory, Network va Debugger modullari bilan ishlatiladi. React Native uchun — React DevTools va Facebook dan Flipper, u tarmoq, ma'lumotlar bazasi va UI iyerarxiyasini inspeksiya qilishni qo'llab-quvvatlaydi. Freymvorkdan qat'iy nazar, profillashning asosiy tamoyillari universaldir: optimallashtirishdan oldin va keyin o'lchang, baseline ni qayd eting, har bir kod o'zgarishida metrikalarni solishtiring.

Zamonaviy yondashuvlar CI da avtomatlashtirilgan profillashni o'z ichiga oladi. Android Firebase Test Lab UI-testlar bilan birga ishlash o'lchovlarini qo'llab-quvvatlaydi: siz nafaqat pass/fail testlarni, balki har bir iteratsiya uchun CPU, Memory va Network grafiklarini ham olasiz. iOS uchun shunga o'xshash funksionallikni GitHub Actions XCUITest va Instruments CLI bilan ta'minlaydi.

To'g'ri vositani qanday tanlash

Bitta metrikani tezkor tekshirish uchun IDE ning o'rnatilgan profilleridan foydalaning. Murakkab oqish tahlili uchun — ixtisoslashtirilgan vositalar (LeakCanary, Instruments Leaks). Drayver darajasida tizim profillashi uchun — Perfetto (Android) yoki DTrace (macOS). Ikki-uch vositani birlashtirish profillash ssenariylarining 95% ini qamrab oladi.

Ko'p beriladigan savollar

Profillash logging dan qanday farq qiladi?

Logging hodisalar ketma-ketligini matn ko'rinishida ko'rsatadi, profillash esa miqdoriy metrikalarni beradi — har bir kod qismi qancha vaqt, xotira, protsessor va tarmoq sarflaydi. Profillash «qancha ko'p» degan savolga, logging esa «nima bo'ldi» degan savolga javob beradi.

Ilovani qanchalik tez-tez profillash kerak?

Har bir yirik relizdan oldin, yangi og'ir UI komponentlari joriy qilinganda va ishlash bo'yicha shikoyatlar paydo bo'lganda profillash tavsiya etiladi. Ideal holda profillash CI ga o'rnatilgan va har bir pull request da avtomatik ravishda ishga tushadi.

Haqiqiy qurilmada profillash mumkinmi?

Ha, va bu emulyatordan ham afzalroq. Haqiqiy qurilma ma'lum bir apparat cheklovlarini hisobga olgan holda haqiqiy ishlashni ko'rsatadi. Android Studio Profiler va Xcode Instruments ulangan qurilmada hech qanday cheklovlarsiz profillashni qo'llab-quvvatlaydi.

Profillovchining o'zi o'lchov natijalariga ta'sir qiladimi?

Ha, har qanday profiller overhead qo'shadi. Namuna olishga asoslangan CPU-profillashda overhead 1–5% ni tashkil qiladi. Kupya dumpi bilan Memory-profillashda — dump vaqtida 10% gacha. Zamonaviy vositalar ta'sirni minimallashtirishga harakat qiladi, lekin natijalarni talqin qilishda buni hisobga olish kerak.

Profillashda baseline nima?

Baseline — bu ilovaning birinchi barqaror versiyasida olingan etalon ishlash metrikalari. Har bir kod o'zgarishida yangi metrikalarni baseline bilan solishtiring. Agar ishga tushirish vaqti baseline ga nisbatan 50 ms ga oshgan bo'lsa — o'zgarishlarni merge qilishdan oldin sababini aniqlash kerak.

Xulosa

  • Profiling — CPU, Memory, Network va Energy ning tor joylarini aniqlash uchun mobil ilovalarni ishlab chiqishning majburiy bosqichi.
  • CPU-profillash UI-threadni bloklaydigan va kadr tushishi hamda ANR ga sabab bo'ladigan metodlarni topadi.
  • Memory-profillash HPROF-dumplar orqali oqishlar, dublikatlar va optimal bo'lmagan alokatsiyalarni aniqlaydi.
  • Network-profillash sekin, takrorlanuvchi so'rovlarni va keshlashning yo'qligini aniqlaydi.
  • Energy-profillash GPS, WakeLock va tarmoq operatsiyalari orqali ilovaning batareyaga ta'sirini kuzatadi.
  • Android uchun Android Studio Profiler + LeakCanary, iOS uchun Xcode Instruments dan foydalaning.
  • Profillashni CI/CD ga o'rnating va har bir reliz uchun baseline metrikalarni qayd eting.

Biz kalit topshirig'i bilan mobil ilovani ishlab chiqamiz

IT Sectr 2017-yildan beri startaplar va korxonalar uchun iOS va Android ilovalarini yaratadi. Biz sizga maslahat beramiz va eng yaxshi yechimni taklif qilamiz.

Loyihani muhokama qilish

Shuningdek o'qing