Instruments — bu nima, Time Profiler va Allocations imkoniyatlari

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

Instruments — iOS, macOS, tvOS va watchOS uchun ilovalar ishlashini tahlil qilish uchun Xcode ga o'rnatilgan profiler. Asbob CPU, xotira, tarmoq, grafik va energiya sarfini real vaqtda o'lchash uchun shablonlar to'plamini taqdim etadi. Apple Developer Documentation ga ko'ra, Instruments ishlab chiqishning barcha bosqichlarida qo'llaniladi — xotira oqishlarini qidirishdan tortib, ilovani ishga tushirish vaqtini optimallashtirishgacha.

Asosiy

  • Instruments — Apple dan iOS, macOS, tvOS va watchOS uchun profiler, Xcode ga o'rnatilgan.
  • Time Profiler har bir ip va metod bo'yicha CPU yukini mikrosekund aniqlikda o'lchaydi.
  • Allocations Heapshot qo'llab-quvvatlashi bilan xotira ajratmalarini real vaqtda kuzatadi.
  • Leaks qo'lda heap dump qilmasdan retain cycles va xotira oqishlarini avtomatik topadi.
  • Energy Log ilovaning batareyaga ta'sirini tizimning har bir komponenti bo'yicha ko'rsatadi.

Instruments nima?

Instruments — Xcode tarkibiga kiruvchi va Sun Microsystems tomonidan ishlab chiqilgan DTrace texnologiyasiga asoslangan profillash va kuzatish tizimi. Instruments o'nlab profillash vositalarini (shablonlarni) yagona interfeysda birlashtiradi: shunchaki shablonni tanlash, ilovani Xcode orqali ishga tushirish va ma'lumot to'plashni boshlash kifoya.

Instruments arxitekturasi mijoz-server modeliga asoslangan: qurilmadagi agent ma'lumotlarni to'playdi va ularni USB ulanish orqali Mac ga uzatadi. Bu profilerning ilova ishlashiga ta'sirini minimal darajaga tushiradi — Instruments asosan host tomonda ishlaydi. WWDC 2022 ma'lumotlariga ko'ra, 1 ms namuna olish chastotasida Time Profiler yuki 3% dan kam.

Instruments maxsus shablonlarni qo'llab-quvvatlaydi — dasturchi bir profillash seansida bir nechta vositalarni birlashtirishi mumkin. Masalan, bir vaqtning o'zida Time Profiler + Allocations + Leaks ni ishga tushirish va CPU cho'qqilari bilan xotira ajratmalari o'rtasidagi korrelyatsiyani ko'rish. Bu har bir komponentni alohida tahlil qilishda mumkin bo'lmagan yaxlit ishlash manzarasini beradi.

Qanday shablonlar standart sifatida mavjud

Xcode 16 ta oldindan o'rnatilgan Instruments shabloni bilan keladi: Time Profiler, Allocations, Leaks, Energy Log, Network, Core Animation, Metal System Trace, File Activity, System Trace va boshqalar. Har bir shablon ma'lum bir vazifa uchun optimallashtirilgan va tegishli trigger va filtr sozlamalari bilan oldindan konfiguratsiya qilingan.

Time Profiler: CPU ishlash tahlili

Time Profiler — eng ko'p ishlatiladigan Instruments shabloni. U chaqiruvlar stekini namuna olish asosida ishlaydi: har 1-10 millisekundda tizim ilovaning barcha iplarining chaqiruv stekini yozib oladi. Seans to'xtatilgandan so'ng, Instruments namunalarni jamlaydi va qaysi metod va funksiyalar eng ko'p vaqt olganini ko'rsatadi. Natija Self Weight bo'yicha saralangan Call Tree — chaqiruvlar daraxti shaklida taqdim etiladi.

Time Profiler ning asosiy metriki — Self Weight (metodda to'g'ridan-to'g'ri o'tkazilgan vaqt, bola metodlarning chaqiruvlarisiz). Aynan Self Weight qaysi funksiyalar protsessorni haqiqatda yuklayotganini ko'rsatadi. Weight (bola metodlar bilan umumiy vaqt) aldamchi bo'lishi mumkin: yuqori Weight ga ega metod shunchaki boshqa sekin metodni chaqirishi mumkin, o'zi esa tez bo'lishi mumkin.

swift
import UIKit

class ImageGalleryViewController: UIViewController {
    // Time Profiler ko'rsatadiki, cellForItemAt Self Weight = 40% ga ega
    // uning ichida decodeImage 35% ni egallaydi — bu tor bo'yin

    func collectionView(
        _ collectionView: UICollectionView,
        cellForItemAt indexPath: IndexPath
    ) -> UICollectionViewCell {
        let cell = collectionView.dequeueReusableCell(
            withReuseIdentifier: "ImageCell",
            for: indexPath
        ) as! ImageCell
        // ❌ decodeImage — tor bo'yin (Self Weight = 35%)
        cell.imageView.image = UIImage(contentsOfFile: imagePath)
        return cell
    }
}

Time Profiler tahlilida com.apple.main-thread da bajariladigan metodlarga e'tibor bering. Agar asosiy ipda Self Weight kadr uchun 16 ms chegarasidan oshsa — UI sekinlashadi. Bunday muammolarning yechimi — tasvirlarni dekodlash, layout hisob-kitoblari va ma'lumotlarni qayta ishlashni asosiy ipdan Grand Central Dispatch (GCD) orqali fon iplariga o'tkazish.

Time Profiler da Call Tree ni qanday o'qish kerak

Call Tree — Self Weight bo'yicha saralangan barcha metod chaqiruvlarining ierarxik ko'rinishi. Call Tree dagi eng og'ir metod — birinchi qator. Qatorni ochib, bu metod qaysi bola metodlarni chaqirganini va ular qancha vaqt olganini ko'rasiz. Self Weight (o'z vaqti) Weight dan (umumiy vaqt) sezilarli darajada ko'p bo'lgan metodlarni qidiring — bu sinxron blokirovkalar va kutish belgilaridir.

Allocations: real vaqtda xotira kuzatuvi

Allocations — ilovaning barcha xotira ajratmalarini kuzatish uchun vosita. Qaysi ob'ektlar, qancha miqdorda va qanday umumiy hajmda har bir momentda yaratilayotganini ko'rsatadi. Android Studio dagi Memory Profiler dan farqli o'laroq, Allocations Heapshot — ikkita suratni solishtirish imkoniyati bilan jonli ob'ektlarning oniy suratini qo'llab-quvvatlaydi.

Allocations interfeysi ikkita asosiy bo'limdan iborat: All Allocations (barcha ob'ekt turlari bo'yicha umumiy statistika) va Call Trees (ob'ektlarni yaratuvchi metodlar bo'yicha taqsimot bilan chaqiruvlar daraxti). Oqishlarni qidirish uchun Heapshot Analysis dan foydalaning: stsenariyni bajarishdan oldin suratga oling, stsenariyni bajaring, keyin suratga oling — va qaysi yangi ob'ektlar xotirada qolganini solishtiring.

Apple Developer Documentation ga ko'ra, Allocations orqali aniqlanadigan eng keng tarqalgan oqish namunasi — kollektsiyalarni skrollashda UIView va CALayer ni haddan tashqari ko'p yaratish. Agar har bir skrollashda jonli UIView lar soni oshsa, kollektsiya esa hujayralarni qayta ishlatsa — qayerdadir eskilarini bo'shatmasdan qo'shimcha view lar yaratiladi. Allocations bu view lar qayerda yaratilayotganini aniq chaqiruv stekini ko'rsatadi.

ParametrTavsifNimaga qarash kerak
# LivingUshbu turdagi jonli ob'ektlar soniStsenariy takrorlanganda barqaror bo'lishi kerak
# TransientDavr mobaynida yaratilgan va bo'shatilgan ob'ektlarKeskin o'sishlar — haddan tashqari ajratmalar belgisi
Total BytesUshbu turdagi xotiraning umumiy hajmiQurilmaning umumiy mavjud RAM i bilan solishtiring

Heapshot Analysis: xotira suratlarini solishtirish

Heapshot — Allocations da jonli ob'ektlarning oniy surati. Stsenariyni bajarishdan oldin Heapshot oling, stsenariyni bajaring va ikkinchi Heapshot oling. Suratlar orasidagi farq qaysi ob'ektlar yaratilgani va bo'shatilmaganini ko'rsatadi. Ideal natija — faqat vaqtinchalik ob'ektlarning (Autorelease pool) o'sishi. Aniq tahlil uchun bir seansda Allocations + Leaks kombinatsiyasidan foydalaning. Allocations qaysi ob'ektlar bo'shatilmayotganini, Leaks esa nima uchun (qaysi kuchli havola ularni ushlab turganini) ko'rsatadi. Har bir oqish shubhasida ikki tomonlama seansni ishga tushiring.

Leaks: xotira oqishlarini avtomatik qidirish

Leaks — iOS va macOS ilovalarida xotira oqishlarini aniqlash uchun ixtisoslashgan vosita. Allocations dan farqli o'laroq, u faqat ajratmalarni ko'rsatadi, Leaks esa retain cycles — ikki yoki undan ortiq ob'ektlarning bir-birini kuchli havolalar bilan ushlab turish holatlarini qidirish uchun heap ni faol skanerlaydi.

Leaks Cycles & Roots — ob'ektlarni ushlab turish grafigini vizuallashtiruvchi bilan birgalikda ishlaydi. Oqish aniqlanganda, Leaks sikldagi barcha ob'ektlarni, ularning retain count ini va havolalar uzatiladigan aniq maydonlarni ko'rsatadi. Dasturchi grafikka qarab, qaysi havolani weak bilan almashtirish kerakligini tushunishi kifoya.

Vosita oqishlarni vaqt chizig'ida qizil marker bilan avtomatik belgilaydi. Leaks real vaqtda ishlaydi: tizim oqishni aniqlashi bilan darhol dasturchiga signal beradi. Bu muammolarni dump va post-tahlil kutmasdan joyida tuzatish imkonini beradi.

WWDC 2022 ma'lumotlariga ko'ra, Leaks hatto murakkab ko'p darajali retain cycles — masalan, uch yoki undan ortiq ob'ektlar kuchli havolalarning yopiq zanjirini hosil qilganda ham aniqlashga qodir. Bunday sikllarni diagnostika qilish uchun Cycles & Roots grafigi ajralmasdir: ob'ektlarning bir-biriga qanday yopilishini vizual ravishda ko'rsatadi.

Cycles & Roots grafigini qanday o'qish kerak

Grafikning har bir tuguni ob'ekt, har bir o'q — kuchli havola. Sikl — o'qlarning yopiq konturi. Tugunning rangi statusni ko'rsatadi: qizil — oqayotgan ob'ekt, yashil — ildiz (GC Root), kulrang — oraliq ob'ekt. Oqishni tuzatish uchun mantiqni buzmasdan weak qilish mumkin bo'lgan o'qni toping — va koddagi havola turini o'zgartiring.

Energy Log: energiya sarfi tahlili

Energy Log — ilovaning energiya sarfini o'lchash uchun Instruments shabloni. Qurilmaning apparat sensorlaridan ma'lumot to'playdi: CPU yuki, Wi-Fi va mobil tarmoq holati, GPS dan foydalanish, displey va Bluetooth. Energy Log ilovadagi qaysi operatsiyalar eng ko'p batareya sarfiga sabab bo'lishini ko'rsatadi va ularni vaqt shkalasi bo'yicha energiya sarfi grafigiga joylashtiradi.

Vosita operatsiyalarni energiya sarfi darajasi bo'yicha tasniflaydi: past (protsessorning normal ishi), o'rta (Wi-Fi uzatish), yuqori (GPS, mobil tarmoq, GPU). Agar Energy Log uzoq vaqt davomida yuqori darajadagi qizil ko'rsatkichlarni ko'rsatsa — ilova fonda batareyani bo'shatadi va foydalanuvchi tomonidan o'chiriladi.

Energy Log tomonidan aniqlanadigan odatiy muammolar: vaqt cheklovisiz WakeLock (ilova topshiriqni tugatgandan keyin protsessorni faol ushlab turadi), fonda yuqori aniqlikdagi Location Updates (har bir necha soniyada koordinata so'rovi), tarmoq seanslaridagi anomaliyalar (serverga tez-tez qayta ulanish). Energy Log har bir bunday hodisani qayd etishni va energiya talab qiladigan operatsiyani o'chirish uchun shart qo'shishni tavsiya qiladi.

Energiya sarfini sinash uchun batareya quvvatida ishlaydigan haqiqiy qurilmadan foydalaning — emulyatorda energiya sarfi ko'rsatkichlari noto'g'ri. CI da batareya sarfini avtomatlashtirilgan tekshirish uchun Energy Log ni UI testlari bilan birga ishga tushiring.

Instruments ni ishga tushirish va natijalarni talqin qilish

Instruments ni ishga tushirish Xcode dan ikki usulda amalga oshiriladi: Product → Profile (⌘I) menyusi orqali yoki Instruments ni Launchpad da alohida dastur sifatida ochish orqali. Birinchi usul qulayroq: Xcode avtomatik ravishda ilovani profillash rejimida yig'adi va uni tanlangan shablon bilan ulangan qurilmada ishga tushiradi. Seans to'xtatilgandan so'ng, Instruments kuzatuvni .trace kengaytmali faylda saqlaydi.

Natijalarni talqin qilish shablonga bog'liq. Time Profiler uchun Self Weight bo'yicha saralangan Call Tree ga qarang — eng yuqori metodlar sizning asosiy tor bo'yinlaringizdir. Allocations uchun — tsiklik stsenariydan keyin # Living ga qarang: ob'ektlar soni oshgan bo'lsa, oqishni qidiring. Leaks uchun — qizil markerlar va Cycles & Roots grafigiga qarang. Optimallashtirishdan oldin va keyin natijalarni solishtiring — bu o'zgarishlarning samaradorligini tasdiqlashning yagona usuli.

swift
// CI da Instruments uchun buyruq qatori
// Instruments ni CI/CD pipeline ga integratsiyalash
import XCTest

class PerformanceTests: XCTestCase {
    func testScrollPerformance() {
        // Kollektsiya skroll vaqtini o'lchaymiz
        measure(metrics: [XCTCPUMetric(), XCTMemoryMetric()]) {
            app.scrollToBottom()
        }
    }
}

CI da Instruments ni buyruq qatori orqali xcodebuild -showBuildSettings va xcrun xctrace bilan ishga tushirish mumkin. Bu har bir commit da profillashni avtomatlashtirish va regressiyani o'tkazib yubormaslik imkonini beradi. Tahlil uchun Baseline solishtirishdan foydalaning: agar metrik oldingi commit ga nisbatan 5% yomonlashgan bo'lsa, pipeline to'xtashi kerak.

Instruments bilan ishlashdagi asosiy xatolar: qurilma o'rniga simulyatorda profillash (CPU va GPU ma'lumotlari noto'g'ri), stsenariysiz ma'lumot yig'ish (natijalar tasodifiy), Call Tree ni e'tiborsiz qoldirish (faqat grafikka qarash, aniq metodlarga emas). Bu xatolarni tuzatish profillash sifatining 80% ini ta'minlaydi.

Tez-tez beriladigan savollar

SwiftUI ilovalari uchun Instruments dan foydalanish mumkinmi?

Ha, Instruments SwiftUI ni to'liq qo'llab-quvvatlaydi. UI ishlashini tahlil qilish uchun Core Animation shablonidan foydalaning — u kadrlarni ko'rsatish tezligini ko'rsatadi va View larning keraksiz qayta chizilishini aniqlaydi. Time Profiler va Allocations ham SwiftUI bilan cheklovlarsiz ishlaydi.

Instruments Shark dan (LeakCanary ning ichki analizatori) qanday farq qiladi?

Instruments — CPU, xotira, tarmoq, grafik va energiya sarfini qamrab oluvchi butun Apple ekosistemasi uchun universal profiler. Shark — LeakCanary da faqat Android da xotira oqishlarini qidirishga ixtisoslashgan ichki heap dump analizatori.

Instruments ni ilovadan chiqarishdan oldin olib tashlash kerakmi?

Instruments ilova kodiga o'rnatilmaydi — bu Xcode orqali ishlayotgan jarayonga ulanadigan tashqi vosita. Kodga hech qanday o'zgartirish kiritish shart emas. .trace fayllari shunchaki jurnallar bo'lib, ikkilik faylga kirmaydi.

Time Profiler ning yuki qancha?

Standart 1 ms namuna olish chastotasida Time Profiler yuki 3% dan kam. Aniq kuzatish rejimida (har bir funksiya chaqiruvi) yuk 20-30% gacha yetishi mumkin, shuning uchun kundalik profillash uchun namuna olishdan foydalaniladi. Aniq kuzatish faqat kritik qismlar uchun kerak.

Instruments natijalarini qanday eksport qilish mumkin?

Natijalar avtomatik ravishda loyiha jildidagi .trace fayliga saqlanadi. Faylni birgalikda tahlil qilish uchun Xcode bilan boshqa Mac da ochish mumkin. Matn formatiga eksport qilish uchun xcrun xctrace export --input file.trace --output result.xml dan foydalaning.

Xulosa

  • Instruments — ishlashning barcha jihatlari uchun shablonlar to'plami bilan Xcode ga o'rnatilgan Apple profileri.
  • Time Profiler chaqiruv stekini namuna olish orqali CPU tor bo'yinlarini topadi — optimallashtirishning asosiy vositasi.
  • Allocations Heapshot Analysis qo'llab-quvvatlashi bilan xotira ajratmalarini real vaqtda kuzatadi.
  • Leaks retain cycles ni avtomatik aniqlaydi va ob'ektlarni ushlab turish grafigini vizuallashtiradi.
  • Energy Log ilovaning batareyaga ta'sirini o'lchaydi, operatsiyalarni energiya sarfi darajasi bo'yicha tasniflaydi.
  • Profillashni haqiqiy qurilmada ishga tushiring, stsenariylardan foydalaning va albatta baseline bilan solishtiring.
  • Instruments ni XCTest va xcrun xctrace orqali CI ga integratsiyalash ishlash regressiyasining oldini oladi.

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