Code motion
کمپیوٹر سائنس میں، کوڈ موشن، جسے کوڈ ہسٹنگ، کوڈ سنکنگ، لوپ-انویرنٹ کوڈ موشن، یا کوڈ فیکٹرنگ کے نام سے بھی جانا جاتا ہے، کسی بھی عمل کے لیے ایک کمبل اصطلاح ہے جو کارکردگی یا سائز کے فوائد کے لیے کسی پروگرام کے اندر کوڈ کو منتقل کرتی ہے، اور یہ ایک عام اصلاح ہے جو زیادہ تر بہتر بنانے والے مرتبوں میں انجام دی جاتی ہے۔ مختلف قسم کے کوڈ موشن کے درمیان فرق کرنا مشکل ہو سکتا ہے، اس کے ارد گرد کی اصطلاحات کے متضاد معنی کی وجہ سے۔ کوڈ موشن کے مختلف استعمال اور فوائد ہیں، جن میں سے بہت سے ان کے نفاذ میں ایک دوسرے کو اوورلیپ کرتے ہیں۔ غیر استعمال شدہ/بیکار کارروائیوں کو ہٹانا کوڈ سنکنگ، جسے سست کوڈ موشن بھی کہا جاتا ہے، ایک ایسی تکنیک کے لیے ایک اصطلاح ہے جو ان شاخوں میں ہدایات کو منتقل کرکے ضائع شدہ ہدایات کو کم کرتی ہے جس میں وہ استعمال ہوتی ہیں: اگر کسی شاخ سے پہلے کوئی آپریشن انجام دیا جاتا ہے، اور شاخ کے راستوں میں سے صرف ایک ہی اس کارروائی کا نتیجہ استعمال کرتا ہے، تو کوڈ سنکنگ میں اس کارروائی کو اس شاخ میں منتقل کرنا شامل ہے جہاں اسے استعمال کیا جائے گا۔ یہ تکنیک ڈیڈ کوڈ کے خاتمے کی ایک شکل ہے اس معنی میں کہ جب اس کے نتائج ضائع یا غیر استعمال شدہ ہوتے ہیں تو یہ کوڈ کو ہٹا دیتا ہے، لیکن ڈیڈ کوڈ کے خاتمے کے برعکس، یہ بے معنی ہدایات کو ہٹا سکتا ہے یہاں تک کہ اگر اس ہدایت کے نتائج کا ممکنہ استعمال عمل درآمد کوڈ کے راستے میں ہو۔ کوڈ فیکٹرنگ پروگرام کے سائز کو کم کرنا سائز کو بہتر بنانے کی تکنیک کے لیے ایک اصطلاح ہے جو شاخوں میں عام انحصار کو اس کے اوپر کی شاخ میں ضم کرتی ہے۔ جس طرح فیکٹرائزنگ انٹیجرز کسی نمبر کو اس کی سب سے چھوٹی ممکنہ شکلوں (عوامل کے طور پر) میں تحلیل کر دیتے ہیں، اسی طرح کوڈ فیکٹرائزیشن کوڈ کو سب سے چھوٹی ممکنہ شکل میں تبدیل کر دیتی ہے، عام "فیکٹرز" کو ضم کر کے جب تک کہ کوئی نقل باقی نہ رہے۔ انحصار کو کم کرنا گلوبل کوڈ موشن، لوکل کوڈ موشن، کوڈ شیڈولنگ، انسٹرکشن شیڈولنگ اور کوڈ ہسٹنگ/سنکنگ ایک ایسی تکنیک کے لیے تمام اصطلاحات ہیں جہاں سی پی یو کے اندر عمل کی کارکردگی کو بہتر بنانے کے لیے ہدایات کو دوبارہ ترتیب دیا جاتا ہے (یا "شیڈول")۔ جدید سی پی یو فی گھڑی سائیکل پانچ یا اس سے زیادہ ہدایات شیڈول کرنے کے قابل ہیں۔ تاہم، ایک سی پی یو کسی ایسی ہدایت کو شیڈول نہیں کر سکتا جو موجودہ (یا ابھی تک عمل میں نہ لائی گئی) ہدایت کے ڈیٹا پر انحصار کرتی ہو۔ مرتب کرنے والے انحصار کو اس انداز میں چھوڑیں گے جو ہدایات کی مقدار کو زیادہ سے زیادہ کرتا ہے جو سی پی یو کسی بھی وقت عمل کر سکتا ہے۔ غیر فعال انٹیل ایٹینیم فن تعمیر پر، برانچ پیشن گوئی (بی آر پی) کی ہدایت کو مرتب کرنے والے کے ذریعہ شاخوں کے اوپر دستی طور پر لہرایا جاتا ہے تاکہ شاخ کو سی پی یو کے ذریعہ فوری طور پر لیا جاسکے۔ ایٹینیم پروسیسر میں زیادہ سے زیادہ کارکردگی کے لیے سی پی یو سے اضافی کوڈ شیڈولنگ پر انحصار کرتا ہے۔ لوپ-غیر متغیر کوڈ موشن لوپ-غیر متغیر کوڈ موشن لوپ-غیر متغیر کوڈ کو لوپ سے باہر کسی پوزیشن پر منتقل کرنے کا عمل ہے، جو ایک ہی نتیجہ کے لیے کچھ حسابات کو دو بار کرنے سے روک کر لوپ کے عمل درآمد کے وقت کو کم کر سکتا ہے۔ مرتب کرنے والی مثالیں ایل ایل وی ایم ایل ایل وی ایم کے پاس اپنی واحد جامد تفویض کی شکل میں سنکنگ پاس ہے۔ ایل ایل وی ایم 15.0 کسی آپریشن کو ڈوب نہیں دے گا اگر اس کے کوڈ کے راستوں میں سے کسی میں اسٹور کی ہدایت شامل ہو، یا اگر اس میں کوئی غلطی ہو سکتی ہے۔ مزید برآں، ایل ایل وی ایم کسی ہدایت کو لوپ میں نہیں ڈوبے گا۔ جی سی سی گنو کمپائلر کلیکشن مرتب شدہ پروگرام کے سائز کو کم کرنے کے مقصد سے "کوڈ فیکٹرنگ" کے نام سے کوڈ موشن کو لاگو کرتا ہے۔ جی سی سی کسی بھی کوڈ کو اوپر یا نیچے کی طرف منتقل کرے گا اگر یہ "کسی بھی موجودہ انحصار کو کالعدم نہیں کرتا ہے اور نہ ہی نئے کو متعارف کراتا ہے"۔ لواجٹ لواجٹ "الاکیشن سنکنگ" کے نام سے کوڈ سنکنگ کا استعمال کرتا ہے، تاکہ مرتب شدہ کوڈ کے لوپ کے اندر عارضی اشیاء کو مختص کرنے اور جمع کرنے میں لگنے والے وقت کو کم کیا جا سکے۔ الاکیشن سنکنگ مختص رقم کو عمل درآمد کے راستوں کی طرف لے جاتا ہے جہاں مختص شدہ شے عمل درآمد کوڈ سے بچ سکتی ہے، اور اس طرح ڈھیر مختص کرنے کی ضرورت ہوگی۔ ہٹائے گئے تمام الاکیشنز کو ان کے کھیتوں پر لوڈ ٹو اسٹور فارورڈنگ سے بھرا جاتا ہے۔ لوپ-غیر متغیر کوڈ موشن انسٹرکشن شیڈولنگ انحصار گراف حوالہ جات مرتب کی اصلاح بھی دیکھیں۔