Instruments — یہ کیا ہے، Time Profiler اور Allocations کی صلاحیتیں

مصنف: IT Sectr اشاعت: 2026-03-30 مطالعے کا وقت: 9 منٹ

Instruments — iOS، macOS، tvOS اور watchOS ایپلیکیشنز کی کارکردگی کے تجزیہ کے لیے Xcode میں شامل ایک پروفائلر ہے۔ یہ ٹول CPU، میموری، نیٹ ورک، گرافکس اور توانائی کی کھپت کو حقیقی وقت میں ماپنے کے لیے ٹیمپلیٹس کا ایک سیٹ فراہم کرتا ہے۔ Apple Developer Documentation کے مطابق، Instruments ڈیولپمنٹ کے تمام مراحل میں استعمال ہوتا ہے — لیک کی تلاش سے لے کر ایپلیکیشن شروع ہونے کے وقت کو بہتر بنانے تک۔

اہم نکات

  • Instruments — iOS، macOS، tvOS اور watchOS کے لیے Apple کا پروفائلر، Xcode میں شامل۔
  • Time Profiler مائیکرو سیکنڈ کی درستگی کے ساتھ ہر تھریڈ اور طریقہ کار کے CPU بوجھ کی پیمائش کرتا ہے۔
  • Allocations Heapshot سپورٹ کے ساتھ حقیقی وقت میں تمام میموری مختص کو ٹریک کرتا ہے۔
  • Leaks دستی ہیپ ڈمپ کے بغیر retain cycles اور میموری لیک خود بخود ڈھونڈتا ہے۔
  • Energy Log سسٹم کے ہر جزو کے لیے ایپلیکیشن کے بیٹری خارج ہونے پر اثرات دکھاتا ہے۔

Instruments کیا ہے؟

Instruments — ایک پروفائلنگ اور ٹریسنگ سسٹم ہے جو Xcode کا حصہ ہے اور Sun Microsystems کے تیار کردہ DTrace ٹیکنالوجی پر مبنی ہے۔ Instruments درجنوں پروفائلنگ ٹولز (ٹیمپلیٹس) کو ایک یونیفائیڈ انٹرفیس میں یکجا کرتا ہے: بس ایک ٹیمپلیٹ منتخب کریں، Xcode کے ذریعے ایپلیکیشن شروع کریں اور ڈیٹا اکٹھا کرنا شروع کریں۔

Instruments کا آرکیٹیکچر کلائنٹ-سرور ماڈل پر مبنی ہے: ڈیوائس پر ایک ایجنٹ ڈیٹا اکٹھا کرتا ہے اور USB کنکشن کے ذریعے Mac کو بھیجتا ہے۔ یہ پروفائلر کے ایپلیکیشن کی کارکردگی پر اثرات کو کم سے کم کرتا ہے — Instruments بنیادی طور پر میزبان کی طرف کام کرتا ہے۔ WWDC 2022 کے مطابق، 1 ms کے نمونے لینے کی شرح پر Time Profiler کا اوورہیڈ 3% سے کم ہے۔

Instruments کسٹم ٹیمپلیٹس کو سپورٹ کرتا ہے — ڈیولپر ایک پروفائلنگ سیشن میں متعدد ٹولز کو یکجا کر سکتا ہے۔ مثال کے طور پر، Time Profiler + Allocations + Leaks کو بیک وقت شروع کریں اور CPU چوٹیوں اور میموری مختص کے درمیان تعلق دیکھیں۔ یہ کارکردگی کی ایک مکمل تصویر فراہم کرتا ہے جو ہر جزو کے علیحدہ تجزیہ سے حاصل نہیں کی جا سکتی۔

ڈیفالٹ طور پر کون سے ٹیمپلیٹس دستیاب ہیں

Xcode 16 پہلے سے انسٹال شدہ Instruments ٹیمپلیٹس کے ساتھ آتا ہے: Time Profiler، Allocations، Leaks، Energy Log، Network، Core Animation، Metal System Trace، File Activity، System Trace اور دیگر۔ ہر ٹیمپلیٹ ایک مخصوص کام کے لیے بہتر بنایا گیا ہے اور صحیح ٹریگر اور فلٹر سیٹنگز کے ساتھ پہلے سے ترتیب دیا گیا ہے۔

Time Profiler: CPU کارکردگی کا تجزیہ

Time Profiler — سب سے زیادہ استعمال ہونے والا Instruments ٹیمپلیٹ ہے۔ یہ کال اسٹیک سیمپلنگ پر مبنی ہے: ہر 1-10 ملی سیکنڈ میں سسٹم ایپلیکیشن کے تمام تھریڈز کے کال اسٹیک کو ریکارڈ کرتا ہے۔ سیشن روکنے کے بعد Instruments نمونوں کو جمع کرتا ہے اور دکھاتا ہے کہ کن طریقوں اور افعال نے سب سے زیادہ وقت لیا۔ نتیجہ Call Tree کے طور پر پیش کیا جاتا ہے — Self Weight کے مطابق ترتیب دیا گیا کال ٹری۔

Time Profiler کی اہم میٹرک Self Weight ہے (طریقہ کار میں براہ راست گزارا گیا وقت، بچوں کے طریقوں کو چھوڑ کر)۔ یہ Self Weight ہی دکھاتا ہے کہ کون سے افعال حقیقت میں پروسیسر کو لوڈ کر رہے ہیں۔ Weight (بچوں کے طریقوں سمیت کل وقت) گمراہ کن ہو سکتا ہے: زیادہ Weight والا طریقہ صرف کسی اور سست طریقہ کو کال کر رہا ہو سکتا ہے، جبکہ خود تیز ہو۔

swift
import UIKit

class ImageGalleryViewController: UIViewController {
    // Time Profiler دکھائے گا کہ cellForItemAt کا Self Weight = 40% ہے
    // اس کے اندر decodeImage 35% لے رہی ہے — یہ رکاوٹ ہے

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

Time Profiler کا تجزیہ کرتے وقت com.apple.main-thread میں چلنے والے طریقوں پر توجہ دیں۔ اگر مین تھریڈ پر Self Weight فی فریم 16 ms کی حد سے تجاوز کر جائے — UI سست ہو جائے گا۔ ان مسائل کا حل تصاویر ڈی کوڈنگ، لے آؤٹ کیلکولیشن اور ڈیٹا پروسیسنگ کو Grand Central Dispatch (GCD) کے ذریعے مین تھریڈ سے بیک گراؤنڈ تھریڈ میں منتقل کرنا ہے۔

Time Profiler میں Call Tree کیسے پڑھیں

Call Tree — Self Weight کے مطابق ترتیب دیے گئے تمام طریقہ کار کالز کی درجہ بندی کی نمائندگی ہے۔ Call Tree میں سب سے بھاری طریقہ پہلی لائن ہے۔ لائن کو پھیلانے پر، آپ دیکھتے ہیں کہ اس طریقہ نے کون سے بچوں کے طریقوں کو بلایا اور انہوں نے کتنا وقت لیا۔ ایسے طریقے تلاش کریں جہاں Self Weight (اپنا وقت) Weight (کل وقت) سے نمایاں طور پر زیادہ ہو — یہ مطابقت پذیر مسدود کرنے اور انتظار کی علامات ہیں۔

Allocations: حقیقی وقت میں میموری ٹریکنگ

Allocations — ایپلیکیشن کے تمام میموری مختص کی نگرانی کے لیے ایک ٹول ہے۔ یہ دکھاتا ہے کہ کون سی اشیاء، کتنی تعداد میں اور کس کل سائز کے ساتھ ہر لمحے بنائی جا رہی ہیں۔ Android Studio کے Memory Profiler کے برعکس، Allocations Heapshot کو سپورٹ کرتا ہے — دو سنیپ شاٹس کا موازنہ کرنے کی صلاحیت کے ساتھ زندہ اشیاء کا فوری سنیپ شاٹ۔

Allocations کا انٹرفیس دو اہم حصوں پر مشتمل ہے: All Allocations (آبجیکٹ کی قسم کے مطابق کل اعدادوشمار) اور Call Trees (اشیاء بنانے والے طریقوں کے مطابق کال ٹری)۔ لیک تلاش کرنے کے لیے Heapshot Analysis استعمال کریں: منظر نامہ چلانے سے پہلے سنیپ شاٹ لیں، منظر نامہ چلائیں، بعد میں سنیپ شاٹ لیں — اور موازنہ کریں کہ کون سی نئی اشیاء میموری میں رہ گئی ہیں۔

Apple Developer Documentation کے مطابق، Allocations کے ذریعے پائے جانے والا سب سے عام لیک پیٹرن — کلیکشن اسکرول کرتے وقت UIView اور CALayer کی ضرورت سے زیادہ تخلیق۔ اگر ہر اسکرول پر زندہ UIView کی تعداد بڑھتی ہے، لیکن کلیکشن سیلز کو دوبارہ استعمال کرتی ہے — تو کہیں اضافی ویوز پرانی ویوز کو آزاد کیے بغیر بنائی جا رہی ہیں۔ Allocations وہ عین کال اسٹیک دکھاتا ہے جہاں یہ ویوز بنائی جا رہی ہیں۔

پیرامیٹروضاحتکیا دیکھنا ہے
# Livingاس قسم کی زندہ اشیاء کی تعدادمنظر نامہ دہرانے پر مستحکم ہونی چاہیے
# Transientمدت میں بنائی اور آزاد کی گئی اشیاءاچانک اضافہ — ضرورت سے زیادہ مختص کی علامت
Total Bytesاس قسم کا کل میموری حجمڈیوائس کی کل دستیاب RAM سے موازنہ کریں

Heapshot Analysis: میموری سنیپ شاٹس کا موازنہ

Heapshot — Allocations میں زندہ اشیاء کا فوری سنیپ شاٹ ہے۔ منظر نامہ چلانے سے پہلے Heapshot لیں، منظر نامہ چلائیں اور دوسرا Heapshot لیں۔ سنیپ شاٹس کے درمیان فرق دکھائے گا کہ کون سی اشیاء بنائی گئیں اور آزاد نہیں ہوئیں۔ مثالی نتیجہ — صرف عارضی اشیاء (Autorelease pool) میں اضافہ۔ درست تجزیہ کے لیے ایک سیشن میں Allocations + Leaks کا امتزاج استعمال کریں۔ Allocations دکھاتا ہے کہ کون سی اشیاء آزاد نہیں ہو رہی ہیں، اور Leaks — کیوں (کون سا مضبوط حوالہ انہیں روکے ہوئے ہے)۔ لیک کے شبے پر ہر بار ڈبل سیشن شروع کریں۔

Leaks: خودکار میموری لیک کی تلاش

Leaks — iOS اور macOS ایپلیکیشنز میں میموری لیک کی نشاندہی کے لیے ایک خصوصی ٹول ہے۔ Allocations کے برعکس جو صرف مختص دکھاتا ہے، Leaks retain cycles (ایسی صورتحال جہاں دو یا زیادہ اشیاء ایک دوسرے کو مضبوط حوالوں سے روکے ہوئے ہوں) کی تلاش میں ہیپ کو فعال طور پر اسکین کرتا ہے۔

Leaks Cycles & Roots کے ساتھ مل کر کام کرتا ہے — آبجیکٹ ہولڈنگ گراف کا ایک ویژولائزر۔ جب لیک کا پتہ چلتا ہے، Leaks سائیکل میں موجود تمام اشیاء، ان کے retain count اور وہ عین فیلڈز دکھاتا ہے جن کے ذریعے حوالہ جات منتقل ہوتے ہیں۔ ڈیولپر کو صرف گراف دیکھ کر سمجھنا ہوتا ہے کہ کس حوالہ کو weak سے تبدیل کرنا ہے۔

یہ ٹول خود بخود ٹائم لائن پر لیک کو سرخ نشان سے نمایاں کرتا ہے۔ Leaks حقیقی وقت میں کام کرتا ہے: جیسے ہی سسٹم لیک کا پتہ لگاتا ہے، یہ فوراً ڈیولپر کو اشارہ کرتا ہے۔ یہ ڈمپ اور پوسٹ اینالیسس کا انتظار کیے بغیر “موقع پر” مسائل حل کرنے کی اجازت دیتا ہے۔

WWDC 2022 کے مطابق، Leaks پیچیدہ کثیر سطحی retain cycles کا بھی پتہ لگا سکتا ہے — مثال کے طور پر، جب تین یا زیادہ اشیاء مضبوط حوالوں کی بند زنجیر بناتی ہیں۔ ایسے سائیکلوں کی تشخیص کے لیے Cycles & Roots گراف ناگزیر ہے: یہ بصری طور پر دکھاتا ہے کہ اشیاء ایک دوسرے پر کیسے بند ہوتی ہیں۔

Cycles & Roots گراف کیسے پڑھیں

گراف کا ہر نوڈ ایک آبجیکٹ ہے، ہر تیر ایک مضبوط حوالہ ہے۔ سائیکل تیروں کا ایک بند لوپ ہے۔ نوڈ کا رنگ حیثیت دکھاتا ہے: سرخ — لیک شدہ آبجیکٹ، سبز — جڑ (GC Root)، سرمئی — درمیانی آبجیکٹ۔ لیک کو ٹھیک کرنے کے لیے، ایک تیر تلاش کریں جسے منطق کو توڑے بغیر weak بنایا جا سکے — اور کوڈ میں حوالہ کی قسم تبدیل کریں۔

Energy Log: توانائی کی کھپت کا تجزیہ

Energy Log — ایپلیکیشن کی توانائی کی کھپت کی پیمائش کے لیے Instruments ٹیمپلیٹ ہے۔ یہ ڈیوائس کے ہارڈویئر سینسرز سے ڈیٹا اکٹھا کرتا ہے: CPU بوجھ، Wi-Fi اور سیلولر ریڈیو کی حالت، GPS کا استعمال، ڈسپلے اور Bluetooth۔ Energy Log دکھاتا ہے کہ ایپلیکیشن میں کون سی کارروائیاں سب سے زیادہ بیٹری خرچ کرتی ہیں اور انہیں وقت کے پیمانے پر توانائی کی کھپت کے گراف پر دکھاتا ہے۔

یہ ٹول کارروائیوں کو توانائی کی کھپت کی سطح کے مطابق درجہ بندی کرتا ہے: کم (عام پروسیسر کام)، درمیانہ (Wi-Fi ٹرانسمیشن)، زیادہ (GPS، موبائل نیٹ ورک، GPU)۔ اگر Energy Log طویل عرصے تک زیادہ سطح کے سرخ اشارے دکھائے — ایپلیکیشن پس منظر میں بیٹری ختم کر رہی ہے اور صارف اسے ہٹا دے گا۔

Energy Log سے پائے جانے والے عام مسائل: وقت کی حد کے بغیر WakeLock (ایپلیکیشن کام مکمل ہونے کے بعد بھی پروسیسر کو فعال رکھتی ہے)، پس منظر میں زیادہ درستگی کے ساتھ Location Updates (ہر چند سیکنڈ میں کوآرڈینیٹ کی درخواست)، نیٹ ورک سیشن کی بے قاعدگیاں (سرور سے بار بار دوبارہ کنیکٹ ہونا)۔ Energy Log ایسے ہر واقعے کو ریکارڈ کرنے اور توانائی سے بھرپور کارروائی کو بند کرنے کی شرط شامل کرنے کی سفارش کرتا ہے۔

توانائی کی کھپت کی جانچ کے لیے بیٹری پاور پر اصلی ڈیوائس استعمال کریں — ایمولیٹر پر توانائی کی کھپت کے اشارے درست نہیں ہیں۔ CI میں بیٹری کی کھپت کی جانچ کو خودکار بنانے کے لیے Energy Log کو UI ٹیسٹ کے ساتھ چلائیں۔

Instruments کو کیسے شروع کریں اور نتائج کی تشریح کریں

Instruments شروع کرنا Xcode سے دو طریقوں سے کیا جاتا ہے: Product → Profile (⌘I) مینو کے ذریعے یا Launchpad سے Instruments کو علیحدہ ایپلیکیشن کے طور پر کھول کر۔ پہلا طریقہ زیادہ آسان ہے: Xcode خود بخود ایپلیکیشن کو پروفائلنگ موڈ میں کمپائل کرتا ہے اور منتخب ٹیمپلیٹ کے ساتھ منسلک ڈیوائس پر چلاتا ہے۔ سیشن روکنے کے بعد Instruments ٹریس کو .trace ایکسٹینشن والی فائل میں محفوظ کرتا ہے۔

نتائج کی تشریح ٹیمپلیٹ پر منحصر ہے۔ Time Profiler کے لیے Self Weight کے مطابق ترتیب دیا گیا Call Tree دیکھیں — سب سے اوپر والے طریقے آپ کے اہم رکاوٹیں ہیں۔ Allocations کے لیے — چکراتی منظر نامے کے بعد # Living دیکھیں: اگر اشیاء کی تعداد بڑھ گئی ہے — لیک تلاش کریں۔ Leaks کے لیے — سرخ نشانات اور Cycles & Roots گراف دیکھیں۔ اصلاح سے پہلے اور بعد کے نتائج کا موازنہ کریں — تبدیلیوں کی تاثیر کی تصدیق کرنے کا یہ واحد طریقہ ہے۔

swift
// CI میں Instruments کے لیے کمانڈ لائن
// CI/CD پائپ لائن میں Instruments کا انضمام
import XCTest

class PerformanceTests: XCTestCase {
    func testScrollPerformance() {
        // کلیکشن اسکرول کا وقت ناپنا
        measure(metrics: [XCTCPUMetric(), XCTMemoryMetric()]) {
            app.scrollToBottom()
        }
    }
}

CI میں، xcodebuild -showBuildSettings اور xcrun xctrace کے ذریعے کمانڈ لائن سے Instruments چلایا جا سکتا ہے۔ یہ ہر commit پر پروفائلنگ کو خودکار بنانے اور تنزلی سے محروم نہ ہونے دیتا ہے۔ تجزیہ کے لیے Baseline موازنہ استعمال کریں: اگر میٹرک پچھلے commit کے مقابلے میں 5% خراب ہوئی ہے — pipeline رک جانی چاہیے۔

Instruments کے ساتھ کام کرتے وقت اہم غلطیاں: ڈیوائس کے بجائے سمیلیٹر پر پروفائلنگ (CPU اور GPU ڈیٹا درست نہیں)، منظر نامے کے بغیر ڈیٹا اکٹھا کرنا (نتائج بے ترتیب)، Call Tree کو نظر انداز کرنا (صرف گراف دیکھنا، مخصوص طریقوں کو نہیں)۔ ان غلطیوں کو درست کرنے سے پروفائلنگ کا 80% معیار ملتا ہے۔

اکثر پوچھے جانے والے سوالات

کیا Instruments SwiftUI ایپلیکیشنز کے لیے استعمال کیا جا سکتا ہے؟

جی ہاں، Instruments مکمل طور پر SwiftUI کو سپورٹ کرتا ہے۔ UI کارکردگی کے تجزیہ کے لیے Core Animation ٹیمپلیٹ استعمال کریں — یہ فریم رینڈرنگ کی رفتار دکھاتا ہے اور غیر ضروری View دوبارہ رینڈرنگ کی نشاندہی کرتا ہے۔ Time Profiler اور Allocations بھی بغیر کسی پابندی کے SwiftUI کے ساتھ کام کرتے ہیں۔

Instruments اور Shark (LeakCanary کے اندرونی تجزیہ کار) میں کیا فرق ہے؟

Instruments — پورے Apple ایکو سسٹم کے لیے ایک عالمگیر پروفائلر ہے جو CPU، میموری، نیٹ ورک، گرافکس اور توانائی کی کھپت کا احاطہ کرتا ہے۔ Shark — LeakCanary میں ایک اندرونی ہیپ ڈمپ تجزیہ کار ہے جو صرف Android پر میموری لیک کی تلاش میں مہارت رکھتا ہے۔

کیا ریلیز سے پہلے ایپلیکیشن سے Instruments کو ہٹانا ضروری ہے؟

Instruments ایپلیکیشن کوڈ میں شامل نہیں ہوتا — یہ ایک بیرونی ٹول ہے جو Xcode کے ذریعے چلنے والے عمل سے جڑتا ہے۔ کوڈ میں کسی تبدیلی کی ضرورت نہیں۔ .trace فائلیں صرف لاگز ہیں جو بائنری میں شامل نہیں ہوتیں۔

Time Profiler کا اوورہیڈ کتنا ہے؟

معیاری 1 ms نمونے لینے کی شرح پر Time Profiler کا اوورہیڈ 3% سے کم ہے۔ درست ٹریسنگ موڈ میں (ہر فنکشن کال پر) اوورہیڈ 20-30% تک پہنچ سکتا ہے، لہذا روزمرہ کی پروفائلنگ کے لیے نمونے لینے کا استعمال کیا جاتا ہے۔ درست ٹریسنگ صرف اہم حصوں کے لیے ضروری ہے۔

Instruments کے نتائج کیسے برآمد کریں؟

نتائج خود بخود پروجیکٹ فولڈر میں .trace فائل میں محفوظ ہو جاتے ہیں۔ فائل کو مشترکہ تجزیہ کے لیے دوسرے Mac پر Xcode کے ساتھ کھولا جا سکتا ہے۔ ٹیکسٹ فارمیٹ میں برآمد کرنے کے لیے xcrun xctrace export --input file.trace --output result.xml استعمال کریں۔

خلاصہ

  • Instruments — کارکردگی کے تمام پہلوؤں کے لیے ٹیمپلیٹس کے ساتھ Xcode میں شامل Apple پروفائلر۔
  • Time Profiler کال اسٹیک سیمپلنگ کے ذریعے CPU رکاوٹیں ڈھونڈتا ہے — اصلاح کا اہم ٹول۔
  • Allocations Heapshot Analysis سپورٹ کے ساتھ حقیقی وقت میں میموری مختص کو ٹریک کرتا ہے۔
  • Leaks خود بخود retain cycles کا پتہ لگاتا ہے اور آبجیکٹ ہولڈنگ گراف کو دیکھتا ہے۔
  • Energy Log توانائی کی کھپت کی سطح کے مطابق کارروائیوں کی درجہ بندی کرکے ایپ کے بیٹری اثرات کی پیمائش کرتا ہے۔
  • اصلی ڈیوائس پر پروفائلنگ چلائیں، منظر نامے استعمال کریں اور ہمیشہ baseline سے موازنہ کریں۔
  • CI میں XCTest اور xcrun xctrace کے ذریعے Instruments کا انضمام کارکردگی کی تنزلی کو روکتا ہے۔

ہم ایک موبائل ایپلیکیشن ٹرنکی تیار کریں گے

IT Sectr 2017 سے اسٹارٹ اپس اور کاروبار کے لیے iOS اور Android ایپلیکیشنز بناتا ہے۔ ہم آپ کو مشورہ دیں گے اور بہترین حل تجویز کریں گے۔

پروجیکٹ پر بحث کریں

مزید پڑھیں