کوڈ کی ساخت کو بہتر بنانے کی اہمیت کے بارے میں بات کریں

مصنف:کزن, تخلیق: 2021-05-22 05:57:14, تازہ کاری:

ایک عوامی کورس جاری کرنے کی وجہ سے، آپ کو اکثر کچھ چھوٹی چھوٹی غلطیوں کا سامنا کرنا پڑتا ہے۔ آج ہم کوڈ کی ساخت کو بہتر بنانے کی اہمیت کے بارے میں بات کریں گے.

جب سود کی بات آتی ہے تو ، سب سے اہم چیزیں دو ہیں: 1 ؛ فنڈز کی افادیت ؛ 2 ؛ اور آرڈر کی رفتار ؛

عام طور پر طلب کرنے کی رفتار پر انحصار کیا جاسکتا ہے ، جیسے تبادلے کے قریب سرورز ، بہتر نیٹ ورک خریدنا۔ لیکن حقیقت میں ، زیادہ تر نئے آنے والوں کے لئے ، صرف کوڈ کی ساخت کو بہتر بنانا ، حکمت عملی کو دسیوں ملی سیکنڈ کی رفتار سے تیز کرسکتا ہے ، جو بہتر نیٹ ورک کی تبدیلی کے مقابلے میں بالکل کم نہیں ہے۔ تاہم ، لاگت بہت کم ہے۔

تاہم ، جب صرف ایک ہی ٹرانزیکشن جوڑی ہوتی ہے تو ، کوڈ کی ساخت کو بہتر بنانے کی رفتار میں 1 ایم ایس سے بھی کم اضافہ ہوتا ہے ، اور اس میں کوئی فرق نہیں پڑتا ہے۔

جبکہ فنڈز کی افادیت میں بہتری کے لیے اکثر ایک ہی فنڈز کے ساتھ ساتھ کئی ٹرانزیکشنز کا مشاہدہ کرنے کی ضرورت ہوتی ہے، اس کے نتیجے میں منطقی لوپ کی تعداد میں اضافہ ہوتا ہے، اس وقت کوڈ کی ساخت کو بہتر بنانے کے فوائد واضح ہیں۔ عام طور پر زیادہ تر تبادلے میں زیادہ سے زیادہ ٹرانزیکشنز کی پیچیدگی O ((n!) ہے، اور اصلاح کے ذریعے مکمل طور پر O ((n!/(m!)) یا O ((n*m) ((m

ایک سوال جو مجھے اکثر آتا ہے ، مثال کے طور پر ، دو سوٹ راستے ہیں A-C اور A-B-C ، اور ایک سوٹ راستہ ہے A-C اور ایک سوٹ راستہ ہے A-B-C ، اور ایک سوٹ راستہ ہے A-C اور ایک سوٹ راستہ ہے۔ دونوں راستوں کو دو بار حساب لگانے کی ضرورت ہوتی ہے ، ایک بار حساب کتاب کرنے کے راستے سے منافع مل سکتا ہے ، فرض کریں کہ p1 اور p2 ، ایک بار حساب کتاب کرنے کا راستہ ہر تبادلے اور اس کی تجارت کے لئے مخصوص قیمت اور رقم کے لئے مخصوص ہے۔

سب سے زیادہ عام طریقہ یہ ہے کہ پہلے ایک فنکشن لکھا جائے۔ اس فنکشن کا کام منافع کا حساب لگانا ہے ، خاص طور پر قیمت اور رقم کا حوالہ دینا ہے۔ پھر اس فنکشن کو لوپ کال کریں ، ہر راستے کا منافع حاصل کریں ، اور اس کے بعد تجارت کے لئے سب سے زیادہ منافع کا انتخاب کریں۔

واضح طور پر، ہم صرف منافع کا حساب لگاتے ہیں جب ہم موازنہ کرتے ہیں، اس کی ضرورت نہیں ہے کہ پہلے سے ہی قیمت اور رقم کا حساب لگائیں.

لہذا ، اصلاح کے دوران ، منافع کو دو افعال میں تقسیم کیا جاسکتا ہے۔ پہلے منافع کو کال کرنے والے افعال کو لوپ کریں ، ہر راستے کا منافع حاصل کریں ، اور پھر تجارت کرنے کے لئے منافع کا سب سے بڑا انتخاب کریں۔ اس طرح ، منطقی طور پر ، منافع کو کال کرنے والے افعال کو ہر لوپ سے صرف ایک بار بلایا جاتا ہے۔ وقت کی پیچیدگی O (((2n سے O (((n + 1) ، n کے لئے سیٹ کے راستوں کی کل تعداد میں بدل جاتی ہے۔

اس کے بعد اگر کوڈ کا مزید تجزیہ کیا جائے تو پتہ چلتا ہے کہ عام طور پر ، چونکہ دوسرے فائدہ مند کارکن موجود ہیں ، لہذا ایک بار جب ایک راستہ منافع بخش ہوتا ہے تو ، اکثر اس وقت دوسرے لوگوں کے ذریعہ فائدہ اٹھایا جاتا ہے۔ لہذا ، ایک ہی وقت میں منافع بخش ہونے والی متعدد راستوں کی صورت حال بہت کم ہے۔

لہذا ہم اس حکمت عملی کو مزید بہتر بناسکتے ہیں، ایک لوپ قائم کرتے ہیں، لوپ میں اگر بیانات شامل ہیں، اگر کسی راستے کو منافع ملتا ہے، تو اسے توڑ دیں، اور اس راستے کی تعداد اور قیمت کا حساب لگائیں.

پھر پیچیدگی O ((n + 1) سے O ((m + 1) ، m < n کے لئے مزید آسان ہے۔ جب تمام تبادلے کے مواقع برابر ہوتے ہیں تو ، m تقریبا n / 2 کے برابر ہوتا ہے ، یعنی پیچیدگی O ((n / 2 + 1) تک کم ہوجاتی ہے۔

یعنی سادہ تقسیم کے افعال کے ذریعے ، منطقی اصلاحاتی ڈھانچے کا تجزیہ کرکے ، وقت کی پیچیدگی کو O ((2n) سے کم کرکے O ((n/2 + 1) کردیا جاسکتا ہے۔

اصل میں جب کوڈ لکھا جاتا ہے تو ، بہت سارے منظرنامے ہیں جن کو بہتر بنایا جاسکتا ہے ، اور جب میں کوڈ لکھتا ہوں تو میں اکثر لکھنے کے بعد ، اکثر یہ پتہ چلتا ہے کہ جب آپٹیمائزیشن منطق ہوتی ہے تو کسی O ((n!) کو O ((n * ((n + 1)) میں بہتر بنانے کا امکان ہوتا ہے۔ بعض اوقات یہاں تک کہ سیکڑوں ملی سیکنڈ کے لئے مکمل ہونے والی منطق کو بھی 1ms کے اندر اندر بہتر بنایا جاسکتا ہے۔

اس کے علاوہ ، آپ کو اپنے کوڈ کی ساخت کو بہتر بنانے کی سفارش کی جاتی ہے ، کیونکہ تھوڑا سا وقت دینے سے آپ کو اسٹریٹجک چکر کے وقفے کو بہت کم کرنے میں مدد مل سکتی ہے۔


مزید

ہڈیوں کا چاقوکیا آپ مجھے بتاسکتے ہیں کہ کس طرح سودے بازی مؤثر طریقے سے ایک ٹانگ والے حالات سے بچ سکتی ہے؟

کزناسٹاک ایکسچینج میں آرڈر کی تاخیر

allez-zکیا تاخیر کا مطلب ہے کہ گہری ڈیٹا میں تاخیر؟

کزنریکارڈ تاخیر، ایک قدر سے زیادہ اس وقت سودے نہیں کیا جاتا ہے.