कोड संरचना को अनुकूलित करने के महत्व के बारे में बात करें

लेखक:भतीजा, बनाया गयाः 2021-05-22 05:57:14, अद्यतन किया गयाः

आज हम बात करेंगे कोड संरचनाओं को अनुकूलित करने के महत्व के बारे में।

लाभ के लिए, सबसे महत्वपूर्ण दो चीजें हैं, 1। धन का उपयोग करना। 2। ऑर्डर करने की गति।

ऑर्डर की गति आम तौर पर एक्सचेंजों के पास के सर्वर, बेहतर नेटवर्क खरीदने आदि पर निर्भर करती है। लेकिन वास्तव में, अधिकांश नए लोगों के लिए, कोड संरचना को अनुकूलित करने से रणनीति को दशकों से मिलीसेकंड तक तेज किया जा सकता है, जो एक बेहतर नेटवर्क के बदले के प्रभाव से बिल्कुल कम नहीं है। लेकिन लागत बहुत कम है।

हालांकि, जब केवल एक लेन-देन जोड़ी होती है, तो कोड संरचना अनुकूलन की गति अक्सर 1 एमएस से भी कम होती है, और अंतर लगभग दिखाई नहीं देता है।

जबकि धन उपयोगिता में वृद्धि के लिए, एक ही धन के लिए एक ही समय में कई लेनदेन जोड़े का निरीक्षण करने की आवश्यकता होती है, तो यह तार्किक चक्रों की संख्या में वृद्धि का कारण बनता है, इस समय कोड संरचना को अनुकूलित करने के लाभ स्पष्ट हैं। सामान्य रूप से, अधिकांश एक्सचेंजों में, ओवरट्रेड के लिए राउंडअप की जटिलता O ((n!), अनुकूलन द्वारा पूरी तरह से O ((n!/(m!)) या O ((n*m) ((m

एक सवाल जो मुझे अक्सर आता है, उदाहरण के लिए, दो सूट मार्ग हैं A-C और A-B-C, और एक है A-B-C, और दूसरा है A-B-C। प्रत्येक मार्ग को दो बार गणना करने की आवश्यकता होती है, एक बार यह गणना करने के लिए कि मार्ग लाभ ला सकता है, मान लें कि p1 और p2 हैं, एक बार यह गणना करने के लिए कि प्रत्येक एक्सचेंज और उसके लेनदेन के लिए विशिष्ट मूल्य और राशि का भुगतान करने की आवश्यकता है।

सबसे आम तरीका है, पहले एक फ़ंक्शन लिखना, जिसका कार्य लाभ की गणना करना है, विशेष रूप से मूल्य और राशि का उल्लेख करना है। फिर इस फ़ंक्शन को लूप में कॉल करना, प्रत्येक पथ के लाभ को प्राप्त करना और व्यापार करने के लिए सबसे अधिक लाभ का चयन करना।

यह स्पष्ट है कि हम तुलना करते समय केवल लाभ की गणना करने की आवश्यकता है, बिना पहले से ही भुगतान की कीमत और राशि की गणना की।

इसलिए, अनुकूलन के दौरान, आप लाभ और उद्धरण को दो कार्यों में विभाजित कर सकते हैं; पहले लाभ को कॉल करने वाले फ़ंक्शन को लूप करें, प्रत्येक पथ का लाभ प्राप्त करें, और फिर लेनदेन करने के लिए लाभ का सबसे बड़ा चुनें। इस प्रकार, तर्कसंगत रूप से, उद्धरण फ़ंक्शन को प्रत्येक लूप से कॉल किया जाता है, केवल एक बार बुलाया जाता है। समय जटिलता O (((2n से O (((n + 1) के लिए बदल जाती है, n सेट पथों की कुल संख्या के लिए।

फिर यदि कोड का आगे विश्लेषण किया जाए, तो यह पाया जाता है कि सामान्य परिस्थितियों में, एक बार जब किसी एक पथ पर लाभ होता है, तो यह अक्सर दूसरे द्वारा लाभान्वित हो जाता है, क्योंकि अन्य लाभार्थी कार्यकर्ताओं की उपस्थिति होती है। इसलिए, यह बहुत मुश्किल है कि कई मार्गों के साथ लाभान्वित होने की स्थिति हो।

तो हम रणनीति को और अधिक अनुकूलित कर सकते हैं, एक लूप सेट कर सकते हैं, एक लूप में एक if कथन जोड़ सकते हैं, और यदि कोई रास्ता पाया जाता है कि लाभ है, तो इसे तोड़ दें, और उस पथ के लिए बोली संख्या और मूल्य का गणना करें।

तब जटिलता को O ((n+1) से आगे सरलीकृत किया जाता है ताकि O ((m+1) हो सके, m

अर्थात्, सरल विभाजन कार्यों के माध्यम से, तर्कसंगत अनुकूलन संरचना का विश्लेषण करके, समय जटिलता को O ((n/2+1) से O ((n/2+1) तक कम किया जा सकता है।

वास्तव में, कोड लिखते समय, अनुकूलन के लिए बहुत सारे परिदृश्य होते हैं, और मैं कोड लिखते समय अक्सर समाप्त होने के बाद, अक्सर पता चलता है कि अनुकूलन तर्क में O ((n!) का अनुकूलन O ((n* ((n+1)) तक करने की संभावना है। कभी-कभी एक तर्क को भी अनुकूलित किया जा सकता है जिसे कुछ सौ मिलीसेकंड के लिए पूरा करने की आवश्यकता होती है।

एक छोटे से समय के रूप में, आप रणनीतिक पूछताछ के अंतराल को काफी कम कर सकते हैं, लेकिन मैं आपको कोड संरचना को अनुकूलित करने की सलाह देता हूं।


अधिक

अस्थि चाकूक्या आप मुझे बता सकते हैं कि एक पैर की स्थिति से बचने के लिए सूट ब्याज कैसे प्रभावी है?

भतीजाएक्सचेंज में आने में देरी

allez-zक्या देरी का मतलब है गहरे डेटा में देरी?

भतीजाविलंब दर्ज करें, एक निश्चित मान से अधिक समय पर सूट नहीं किया जाता है।