0
ফোকাস
232
অনুসারী

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

তৈরি: 2021-05-22 05:57:14, আপডেট করা হয়েছে:
comments   4
hits   1188

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

মূল্যায়নের জন্য, সবচেয়ে গুরুত্বপূর্ণ দুটি জিনিস হলঃ ১। তহবিলের ব্যবহারের হার; ২। ক্রয়-বিক্রয় গতি।

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

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

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

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

সবচেয়ে সাধারণ পদ্ধতি হল একটি ফাংশন লিখতে যা লভ্যাংশ গণনা করে, বিশেষ করে মূল্য এবং পরিমাণ উল্লেখ করে। তারপর এই ফাংশনটি পুনরাবৃত্তি করে, প্রতিটি পথের মুনাফা পাওয়ার পরে, সর্বাধিক মুনাফা বেছে নিন।

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

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

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

সুতরাং আমরা এই কৌশলটি আরও উন্নত করতে পারি, একটি চক্র তৈরি করতে পারি, একটি চক্রের মধ্যে if বিবৃতি, এবং যদি আমরা কোনও পথের মধ্যে একটি লাভ খুঁজে পাই, তবে এটি ভেঙে যায়, এবং তারপরে এই পথের জন্য উদ্ধৃতি এবং দাম গণনা করা হয়।

তাহলে জটিলতা O ((n+1) থেকে আরও সরলীকৃত হবে O ((m+1), m। যখন প্রতিটি এক্সচেঞ্জের সুযোগ সমান হয়, m প্রায় n/2 হয়, জটিলতা O ((n/2+1) এ হ্রাস করা হয়।

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

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

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