কোড কাঠামো অপ্টিমাইজ করার গুরুত্ব সম্পর্কে কথা বলুন

লেখক:পোঁদ, তৈরিঃ 2021-05-22 05:57:14, আপডেটঃ

একটি উন্মুক্ত কোর্স প্রকাশের কারণে প্রায়শই কিছু ছোটখাটো সমস্যা দেখা যায়। আজ আমরা কোড কাঠামো অপ্টিমাইজ করার গুরুত্ব সম্পর্কে কথা বলব।

সুবিধার ক্ষেত্রে সবচেয়ে গুরুত্বপূর্ণ দুটি বিষয় রয়েছেঃ ১। তহবিলের ব্যবহার ২। অর্ডার গ্রহণের গতি।

অর্ডারের গতি সাধারণত এক্সচেঞ্জের কাছাকাছি সার্ভার বা আরও ভাল নেটওয়ার্ক কেনার উপর নির্ভর করে সমাধান করা যেতে পারে। তবে বাস্তবে, বেশিরভাগ নতুনদের জন্য, কেবলমাত্র কোড কাঠামো অনুকূলিতকরণ কৌশলটি কয়েক দশ মিলিসেকেন্ড দ্রুত করতে পারে, যা আরও ভাল নেটওয়ার্কের পরিবর্তে কার্যকারিতার চেয়ে কম নয়। তবে ব্যয় অনেক কম।

তবে যখন শুধুমাত্র একটি লেনদেনের জোড়া থাকে, তখন কোড কাঠামো অনুকূলিতকরণের গতি প্রায়শই 1 এমএস এরও কম হয় এবং পার্থক্যটি খুব কমই দেখা যায়।

তহবিলের ব্যবহারের উন্নতি, যা প্রায়শই একই তহবিলের জন্য একই সময়ে একাধিক লেনদেনের জোড়া পর্যবেক্ষণের প্রয়োজন হয়, এর ফলে লজিক্যাল লুপের সংখ্যা বৃদ্ধি পায়, যখন কোড কাঠামোর অপ্টিমাইজেশনের সুবিধাগুলি সুস্পষ্ট হয়। সাধারণভাবে, বেশিরভাগ এক্সচেঞ্জের জন্য একাধিক লেনদেনের জন্য রুটের জটিলতা O ((n!), অপ্টিমাইজেশনের মাধ্যমে সম্পূর্ণরূপে O ((n!/(m!)) অবধি হ্রাস করা যেতে পারে এমনকি O ((n*m)) ((m

আমি প্রায়ই একটি প্রশ্ন করি, উদাহরণস্বরূপ, দুটি সূত্র রয়েছে A-C এবং A-B-C, যা একটি সূত্রের সাথে একটি সূত্রের সাথে সম্পর্কিত। দুটি পথকে দুইবার গণনা করতে হবে, একটি পথের গণনা লাভের জন্য, অনুমান করা হয় p1 এবং p2, একটি পথের গণনা প্রতিটি এক্সচেঞ্জ এবং তাদের লেনদেনের জন্য নির্দিষ্ট মূল্য এবং পরিমাণের জন্য নির্দিষ্ট মূল্য এবং পরিমাণের জন্য।

সর্বাধিক প্রচলিত পদ্ধতি হল একটি ফাংশন লিখুন যা মুনাফা গণনা করে, বিশেষ করে মূল্য এবং পরিমাণ উল্লেখ করে। তারপর লুপ কল করুন, প্রতিটি পথের মুনাফা অর্জন করুন এবং সর্বোচ্চ মুনাফা নির্বাচন করুন।

এটা স্পষ্ট যে, আমরা তুলনা করার সময় শুধু লাভের হিসাব করতে চাই, শুরুতে টিকিটের দাম এবং পরিমাণ গণনা করার দরকার নেই।

সুতরাং, অপ্টিমাইজেশান করার সময়, আপনি লাভ এবং আমানতকে দুটি ফাংশনে বিভক্ত করতে পারেন। প্রথমে লাভের ফাংশনটি কল করুন, প্রতিটি পথের লাভ পান, তারপরে সবচেয়ে বেশি লাভের জন্য লেনদেন করুন। সুতরাং, যুক্তিগতভাবে আমানত ফাংশনটি প্রতিটি লুপ থেকে কল করে, কেবল একবার কল হয়ে যায়। সময় জটিলতা O (((2n থেকে O (((n + 1), n এর জন্য মোট সেট পথের সংখ্যা হিসাবে পরিবর্তিত হয়।

তারপর যদি কোডটি আরও বিশ্লেষণ করা হয়, তাহলে দেখা যায় যে, সাধারণত, যখনই একটি পথ লাভজনক হয়, তখন এটি অন্যদের দ্বারা লাভজনক হয়। সুতরাং, একই সময়ে একাধিক পথ লাভজনক হওয়ার সম্ভাবনা খুব কম।

সুতরাং আমরা কৌশলটি আরও অনুকূল করতে পারি, একটি লুপ, লুপ এবং যদি একটি বিবৃতি যোগ করতে পারি, যদি আমরা একটি পথ খুঁজে পাই যেখানে লাভ আছে, তাহলে এটিকে বিরতি দিন, এবং তারপর এই পথের জন্য অর্ডার সংখ্যা এবং মূল্য গণনা করুন।

তাহলে জটিলতা O ((n+1) থেকে আরও সরলীকৃত হয় O ((m+1) এর জন্য, m

অর্থাৎ, সহজ বিভাজক ফাংশন ব্যবহার করে, লজিক্যাল অপ্টিমাইজেশান কাঠামো বিশ্লেষণ করে, সময় জটিলতা O ((2n) থেকে O ((n/2+1) এ হ্রাস করা যায়।

আসলে, কোড লেখার সময়, অপ্টিমাইজ করার জন্য প্রচুর দৃশ্য রয়েছে, এবং আমি প্রায়শই কোড লেখার পরে, প্রায়শই খুঁজে পাই যে অপ্টিমাইজেশন লজিকের সময় কোনও O ((n!) এর অপ্টিমাইজেশন O ((n * ((n + 1)) এর সম্ভাবনা রয়েছে; কখনও কখনও এমনকি কয়েকশো মিলিসেকেন্ডের জন্য কার্যকর হওয়া লজিককে 1ms এর মধ্যে অপ্টিমাইজ করা যায়।

এটি একটি সামান্য সময় প্রদান হিসাবে কৌশলগত চক্রান্তের ব্যবধানকে উল্লেখযোগ্যভাবে হ্রাস করতে পারে, তবে কোডের কাঠামোটি অনুকূল করার পরামর্শ দেওয়া হচ্ছে।


আরো

হাড়ের ছুরিআপনি কি আমাকে বলতে পারেন কিভাবে সুইচিং এফেক্টিভলি এক পায়ে পড়া এড়াতে পারে?

পোঁদএক্সচেঞ্জের কাছে বিলম্বিত অর্ডার

Allez-zএই বিলম্ব কি গভীর তথ্যের বিলম্ব?

পোঁদরেকর্ড বিলম্ব, একটি নির্দিষ্ট মান অতিক্রম করার সময় সুবিধার কাজ করা হয় না.