فائدہ:
- پہلے پروفائل لے کر اور حقیقی رکاوٹ کی پیمائش کرکے، اندازہ لگانے کے بجائے ڈیٹا کی بنیاد پر اصلاح کرنا اور مصنوعی ذہانت سے پروفائل آؤٹ پٹ کی ترجمانی کرنا۔
- سٹارٹ اپ ٹائم، روانی، میموری اور بیٹری کے لحاظ سے مہنگے ترین آپریشن کو نشانہ بنانے اور بھاری کام کو مرکزی دھاگے سے ہٹانے کی صلاحیت
- AI صلاحیتوں کی بیٹری اور پروسیسر کی لاگت کا انتظام کرنے کی صلاحیت جیسے آن ڈیوائس ماڈل اور کلاؤڈ کالنگ سیمپلنگ اور بیچ پروسیسنگ کے ذریعے
موبائل استعمال کرنے والے بے صبر ہیں۔ اگر ایپ آہستہ سے کھلتی ہے، اسکرولنگ کے دوران ہینگ ہوجاتی ہے، یا بیٹری تیزی سے ختم ہوجاتی ہے، تو صارف اسے ڈیلیٹ کردیتا ہے اور اسٹور میں اسے اسٹار ریٹنگ دیتا ہے۔ کارکردگی اور بیٹری کی کارکردگی موبائل ایپ کی بقا کا معاملہ ہے۔ یہ صارف کے اطمینان اور اسٹور کی درجہ بندی دونوں کو براہ راست متاثر کرتا ہے۔ AI کارکردگی کی رکاوٹوں (رکاوٹوں) کا پتہ لگانے، پیمائش کے نتائج کی تشریح، اور اصلاح کی سفارش کرنے میں ایک طاقتور مدد ہے۔ لیکن سنہری اصول باقی ہے: پہلے پیمائش کریں، بعد میں اصلاح کریں۔ اس یونٹ میں، ہم AI کے ساتھ ڈیٹا پر مبنی طریقے سے کارکردگی اور بیٹری کے مسائل کو حل کرنا سیکھیں گے۔ ایک خاص طور پر اہم مسئلہ بیٹری پر پڑنے والے اثرات اور AI صلاحیتوں کی کارکردگی کا انتظام کر رہا ہے جو ہم نے پچھلی یونٹوں میں شامل کی ہیں (آن ڈیوائس ماڈل، کلاؤڈ کالنگ)۔
پیمائش کیے بغیر اصلاح کرنا
ایک ناتجربہ کار ڈویلپر کی سب سے بڑی غلطی پیشین گوئی کی اصلاح ہے: یہ کہہ کر وقت ضائع کرنا کہ "یہ سست ہونا چاہیے"۔ حقیقی رکاوٹ تقریبا ہمیشہ ایک غیر متوقع جگہ پر ہوتی ہے۔ لہذا پہلے پروفائل لیا جاتا ہے (پروفائلنگ - پیمائش کرنا کہ ایپلی کیشن کا کون سا حصہ کتنا وقت/میموری/بیٹری استعمال کرتا ہے)۔ اینڈرائیڈ اسٹوڈیو پروفائلر اور ایکس کوڈ انسٹرومینٹس اس کام کے لیے ہیں۔ AI کو پیمائش کا ڈیٹا دینا تشریح کو تیز کرتا ہے۔ لیکن پیمائش کے بغیر، AI کو بتانے کا کہ "میری ایپلیکیشن سست ہے، اسے تیز کریں" کا مطلب ہے آنکھیں بند کرکے پیشین گوئیاں کرنا۔
کارکردگی کے چار اہم محور ہیں:
محور
علامت
عام وجہ
آغاز کا وقت
درخواست دیر سے کھلتی ہے۔
مین تھریڈ پر بھاری کام
روانی (جنک)
اسکرول پھنس جاتا ہے۔
طویل پروسیسنگ، UI تھریڈ میں غیر ضروری دوبارہ ڈرا
یادداشت
سوجن، گرنا
لیک، بڑی تصویر، کیش بے قابو
بیٹری/گرمی
تیز انزال
مسلسل مقام، نیٹ ورک، سینسر، پس منظر کا کام
ٹپ: AI سے کارکردگی کے مسئلے کے بارے میں پوچھتے وقت، پروفائل آؤٹ پٹ دیں (جس فنکشن میں کتنا وقت لگتا ہے، میموری گراف)۔ مشکل ڈیٹا جیسا کہ "وہ فنکشن 30ms فی فریم لیتا ہے" AI کو حقیقی رکاوٹ پر توجہ مرکوز کرنے کی اجازت دیتا ہے۔ "سست" جیسا ساپیکش جملہ ایک عام اور بیکار جواب دیتا ہے۔
AI صلاحیتوں کی بیٹری کی قیمت
اس ماڈیول میں ہم نے جو AI خصوصیات شامل کی ہیں وہ طاقتور ہیں، لیکن وہ مفت نہیں ہیں۔ آن ڈیوائس ماڈل کو نکالنے سے پروسیسر اور بیٹری پر دباؤ پڑتا ہے۔ مسلسل چلنے والی تصویر کی شناخت (جیسے کیمرہ ہر فریم پر کارروائی کرتا ہے) فون کو گرم کردے گا اور منٹوں میں بیٹری ختم کردے گا۔ دوسری طرف، کلاؤڈ AI کالز، نیٹ ورک ریڈیو (اینٹینا جو ڈیٹا بھیجتا اور وصول کرتا ہے) کو ہر وقت رکھ کر بیٹری کو ختم کرتا ہے۔ حل: آن ڈیوائس ماڈل کو صرف ضرورت کے وقت چلائیں، ہر فریم کے بجائے فی سیکنڈ میں چند بار کیمرہ کا نمونہ لیں، بیچ کلاؤڈ کی درخواستیں بھیجیں، ڈیوائس کے چارج ہونے یا بیکار ہونے کے دوران ہیوی لفٹنگ کریں۔
احتیاط: مسلسل چلنے والی AI خصوصیت (لائیو ترجمہ، مسلسل آبجیکٹ کی شناخت) بیٹری کو بہت تیزی سے ختم کر سکتی ہے، ڈیوائس کو گرم کر سکتی ہے، اور سسٹم کے ذریعے گلا گھونٹ سکتا ہے۔ ایک خصوصیت جو صارف کو محسوس کرتی ہے کہ یہ قیمت حذف ہو گئی ہے۔ میں ہمیشہ AI سے پوچھتا ہوں "میں اس فیچر کو بیٹری دوستانہ کیسے بناؤں؟" سوال بھی پوچھیں۔
اصلاح کے مراحل
- پیمائش کریں۔ پروفائلر کے ساتھ حقیقی رکاوٹ تلاش کریں۔ اندازہ نہ لگائیں۔
- سب سے بڑا مسئلہ منتخب کریں۔ 1% بہتری کا پیچھا نہ کریں؛ سب سے مہنگے لین دین کا مقصد۔
- ڈیٹا کے ساتھ AI سے پوچھیں۔ پروفائل آؤٹ پٹ + متعلقہ کوڈ کے ساتھ اصلاح کی تجویز کی درخواست کریں۔
- دوبارہ لگائیں اور پیمائش کریں۔ کیا بہتری حقیقی ہے؟ کیا نمبر کم ہو گیا ہے؟
- رجعت کنٹرول۔ کیا اصلاح نے کچھ توڑا؟ بصری اور فنکشنل ٹیسٹنگ کو دہرائیں۔
تین چھوٹے مقدمات
کیس 1 - غلط جگہ پر تلاش کرنا۔ ایک ٹیم نے سوچا کہ فہرستیں پھنس گئی ہیں اور اسکرولنگ کوڈ کو ہفتوں تک دوبارہ کام کرنے سے کوئی فائدہ نہیں ہوا۔ جب انہوں نے پروفائلر لیا اور ڈیٹا کو AI کو فیڈ کیا، تو پتہ چلا کہ اصل رکاوٹ ہر قطار کے ساتھ نیٹ ورک پر دوبارہ لوڈ ہونے والی تصاویر تھیں۔ جب بصری کیش شامل کیا گیا تو روانی 42 FPS سے بڑھ کر 60 FPS ہو گئی۔ سبق: پیمائش ہفتوں کی فضول کوششوں سے گریز کرتی ہے۔
کیس 2 - بیٹری مونسٹر کی خصوصیت۔ ایک ترجمہ ایپ نے کیمرے کے ساتھ لائیو ٹیکسٹ ترجمہ شامل کیا صارفین نے شکایت کی کہ "فون 15 منٹ میں گرم ہوگیا اور 30 فیصد بیٹری ختم ہوگئی۔" جب AI سے مشورہ کیا گیا تو پتہ چلا کہ کیمرہ 30 فریم فی سیکنڈ پروسیس کر رہا ہے۔ جب اسے 5 فریموں تک کم کر دیا گیا اور نتیجہ چند فریموں کے علاوہ اپ ڈیٹ کیا گیا تو بیٹری کی کھپت ایک تہائی تک کم ہو گئی، اور معیار نمایاں نہیں رہا۔ سبق: AI کو ہمیشہ بیٹری کی آنکھ سے سیٹ کریں۔
کیس 3 - آہستہ آغاز۔ ایک ایپ 4.5 سیکنڈ میں کھل رہی تھی۔ 20% صارفین اسٹارٹ اپ پر باہر نکل رہے تھے۔ پروفائل نے ظاہر کیا کہ تمام ابتدائی کام (تجزیہ، ڈیٹا لوڈنگ، ماڈل کی تیاری) ترتیب وار مین تھریڈ پر کیے گئے تھے۔ اے آئی کی تجویز کے ساتھ، ان کو ملتوی کر دیا گیا ہے اور بیک برنر پر ڈال دیا گیا ہے؛ کھلنے کا وقت 1.3 سیکنڈ تک کم کر دیا گیا، اور ترک کرنے کی شرح آدھی رہ گئی۔ سبق: شروع میں صرف ضروری کام کریں۔
کمزور فوری / مضبوط اشارہ
کمزور اشارہ: "میری ایپ سست ہے، اسے تیز کریں۔"
طاقتور پرامپٹ: "لسٹ سکرولنگ میری اینڈرائیڈ ایپلیکیشن میں پھنس جاتی ہے (جنک)۔ پروفائلر ڈیٹا: bindImageView ہر فریم پر 28ms لیتا ہے، نیٹ ورک سے ہر بار تصاویر لوڈ ہوتی ہیں، کوئی کیش نہیں ہوتا ہے۔ متعلقہ کوڈ: [RecyclerView اڈاپٹر کوڈ]۔ 3 سب سے زیادہ موثر اصلاح کی تجویز کریں تاکہ ہر ممکنہ ضمنی اثرات اور ممکنہ اثرات کے حل کو ترجیح دیں۔ تصویر کے معیار کو کم نہ کریں۔"
کاپی کرنے کے قابل ٹیمپلیٹس
Bottleneck analysis template: "مندرجہ ذیل پروفائل ڈیٹا کی تشریح کریں اور 3 سب سے مہنگے آپریشنز تلاش کریں: [profiler output]۔ ہر ایک کے لیے ممکنہ وجہ اور ٹھوس اصلاح تجویز کریں۔ پہلے سب سے زیادہ اثر دیں۔"
بیٹری آپٹیمائزیشن ٹیمپلیٹ: "یہ فیچر بیٹری کو تیزی سے ختم کر دیتا ہے: [خصوصیت، جیسے مستقل مقام]۔ اسے بیٹری کو دوستانہ بنائیں:- نمونے لینے کی فریکوئنسی کو کم کریں- پس منظر میں پابندی- بیچ پروسیسنگ- صارف کے تجربے میں خلل ڈالے بغیر صرف ضروری حل کو چھانٹ کر چلائیں۔ [کوڈ]"
اسٹارٹ اپ اسپیڈ اپ ٹیمپلیٹ: "ایپلی کیشن اسٹارٹ اپ کو تیز کریں۔ وہ چیزیں جو فی الحال اسٹارٹ اپ پر کی جارہی ہیں: [فہرست]۔ کن کو ملتوی کیا جا سکتا ہے، بیک گراؤنڈ کیا جا سکتا ہے، یا سست لوڈ کیا جا سکتا ہے؟ ضروری کو الگ کریں۔ [کوڈ]"
AI فیچر لاگت کا ٹیمپلیٹ: "میں نے شامل کردہ [آن ڈیوائس ماڈل / کلاؤڈ کال] فیچر کی کارکردگی اور بیٹری کی لاگت کا جائزہ لیں۔ لاگت کو کم کرنے کے لیے ان میٹرکس اور حکمت عملیوں کی فہرست بنائیں جن کی مجھے پیمائش کرنی چاہیے۔
عام غلطیاں
- پیمائش کیے بغیر اصلاح کرنا۔ اصل رکاوٹ اکثر پیش گوئی سے مختلف جگہ پر ہوتی ہے۔
- چھوٹے فوائد کا پیچھا کرنا۔ 1% بہتری کے بجائے سب سے مہنگی کارروائی کا مقصد بنائیں۔
- AI خصوصیات کی بیٹری کی قیمت کو نظر انداز کرنا۔ مسلسل چلنے والا ماڈل/کیمرہ/نیٹ ورک بیٹری کو کھا جاتا ہے۔
- مرکزی دھاگے کو تھکا دینا۔ شروع کرنے اور اسکرولنگ کی بھاری لفٹنگ UI تھریڈ پر نہیں ہونی چاہیے۔
- اصلاح کے بعد دوبارہ پیمائش نہیں کرنا۔ اس بات کی توثیق کریں کہ بہتری حقیقی ہے اور کچھ بھی نہیں ٹوٹتا۔
- ایمولیٹر میں کارکردگی کی پیمائش۔ ڈیوائس کی اصل رفتار، درجہ حرارت اور بیٹری بالکل مختلف ہیں۔
خلاصہ میں
کارکردگی اور بیٹری موبائل ایپ کی بقا کا معاملہ ہے۔ سنہری اصول: پہلے پیمائش کریں، بعد میں اصلاح کریں۔ AI کو پروفائل ڈیٹا دینا تشریح کو تیز کرتا ہے۔ "تیز رفتار" کرنے کی بے پناہ خواہش اندھے اندازوں کی طرف لے جاتی ہے۔ سب سے مہنگے لین دین کا مقصد، چھوٹے منافع کا پیچھا نہ کریں. اس ماڈیول میں شامل اے آئی کی صلاحیتیں طاقتور ہیں لیکن بیٹری اور پروسیسر کے اخراجات اٹھاتی ہیں۔ نمونے لینے کی فریکوئنسی کو کم کرکے، بیچنگ، اور صرف ضرورت کے وقت چلا کر اس لاگت کا نظم کریں۔ ہر اصلاح کے بعد اصلی ڈیوائس پر دوبارہ پیمائش کریں۔
درخواست کا کام
کسی ایپلیکیشن میں پروفائل درآمد کریں (آپ کا اپنا پروجیکٹ یا مثال) یا ایک نمونہ پروفائل آؤٹ پٹ بنائیں اور اسے AI کے ذریعہ "Bottleneck analysis template" کے ساتھ تشریح کریں۔ سب سے زیادہ اثر کی اصلاح کا اطلاق کریں اور دوبارہ پیمائش کریں: کیا واقعی تعداد میں کمی آئی؟ اس کے علاوہ، آپ نے اس ماڈیول (آن ڈیوائس ماڈل یا کلاؤڈ کال) میں شامل کردہ AI فیچر کا "AI فیچر لاگت ٹیمپلیٹ" کے ساتھ بیٹری کے لحاظ سے جائزہ لیں اور کم از کم ایک بیٹری کے موافق سیٹنگ کا تعین کریں۔
چیک لسٹ
- مجھے اصلاح سے پہلے پروفائل مل گیا، مجھے اندازہ نہیں تھا۔
- [ ] میں نے سب سے مہنگی تجارت کا مقصد بنایا، میں نے چھوٹے منافع پر بکھری نہیں کی۔
- [ ] میں نے AI پروفائل کا ڈیٹا ٹھوس نمبروں میں دیا۔
- میں نے AI خصوصیات کی بیٹری/پروسیسر کی قیمت کا اندازہ کیا۔
- میں نے مرکزی دھاگے سے بھاری لفٹنگ ہٹا دی۔
- اصلاح کے بعد، میں نے اصلی ڈیوائس پر دوبارہ پیمائش کی اور ریگریشن کو چیک کیا۔