আমি কম্পিউটার সায়েন্সের একজন ছাত্র এবং প্রোগ্রাম এবং সাজানোর ক্ষেত্রে যখন "ওভারহেড" শব্দটি প্রচুর শুনছি। তুমি আসলে কি বোজাতে ছাচ্ছ?
আমি কম্পিউটার সায়েন্সের একজন ছাত্র এবং প্রোগ্রাম এবং সাজানোর ক্ষেত্রে যখন "ওভারহেড" শব্দটি প্রচুর শুনছি। তুমি আসলে কি বোজাতে ছাচ্ছ?
উত্তর:
কোনও অপারেশন সেটআপ করার জন্য এটি প্রয়োজনীয় সংস্থানসমূহ। এটি সম্পর্কিত নয়, তবে প্রয়োজনীয় বলে মনে হচ্ছে but
এটি যখন আপনার কোথাও যাওয়ার দরকার পড়ে তখন আপনার গাড়ী প্রয়োজন হতে পারে like তবে, রাস্তায় গাড়ি চালানোর জন্য গাড়িটি পাওয়া অনেকটা ওভারহেড হবে, যাতে আপনি চলতে চাইতে পারেন want তবে আপনি যদি সারা দেশ জুড়ে যাচ্ছেন তবে ওভারহেডটি উপযুক্ত হবে।
কম্পিউটার সায়েন্সে, কখনও কখনও আমরা রাস্তায় নামার জন্য গাড়ি ব্যবহার করি কারণ আমাদের কাছে আরও ভাল উপায় নেই, বা "কীভাবে চলতে শেখা" আমাদের সময় সাপেক্ষ নয়।
শব্দের অর্থ প্রসঙ্গের সাথে অনেকগুলি পৃথক হতে পারে। সাধারণভাবে, এটি ব্যবহৃত হয় এমন সংস্থানগুলি (প্রায়শই মেমরি এবং সিপিইউ সময়) যা ব্যবহারিকৃত ফলাফলের জন্য সরাসরি অবদান রাখে না, তবে ব্যবহৃত প্রযুক্তি বা পদ্ধতি দ্বারা প্রয়োজনীয়। উদাহরণ:
malloc
বরাদ্দকারীর (ক্লাসিক 32-বিট মেশিন অনুমান করে) ব্লক প্লাস গার্ডের মানগুলির আকারের কারণে 8 টি বাইটের একটি বিল্ট-ইন ওভারহেড ফিরে পেয়েছে value এমনকি এটির আগেও আপনি বরাদ্দ গ্রানুলারিটি সম্পর্কে ভাবেন। সাধারণ 4 বাইট পূর্ণসংখ্যার একক লিঙ্কযুক্ত তালিকায় 75% এর ওভারহেড থাকবে; অ্যারেগুলি আরও ভাল (যদি আপনার মাঝখানে দ্রুত সন্নিবেশের প্রয়োজন না হয়) তবে তাদের একবারে ওভারহেড থাকতে পারে (বা কম যদি অ্যারেটি গতিশীলভাবে বরাদ্দ না হয়)।
আপনি ক্লান্ত এবং আর কোনও কাজ করতে পারবেন না। আপনি খাবার খান। খাবারটি অনুসন্ধান করতে, এটি পেতে এবং আসলে এটি খাওয়ার শক্তিই শক্তি গ্রহণ করে এবং ওভারহেড হয়!
কোনও কাজ সম্পাদনের জন্য ওভারহেড হ'ল কিছু নষ্ট হয়। লক্ষ্যটি খুব খুব ছোট করে ওভারহেড তৈরি করা।
কম্পিউটার সায়েন্সে আপনাকে একটি সংখ্যা মুদ্রণ করতে চান বলে দেয়, আপনার কাজটি স্থির করে। তবে নম্বরটি সংরক্ষণ করে, এটি মুদ্রণের জন্য ডিসপ্লে সেটআপ করা এবং মুদ্রণের জন্য রুটিনগুলি কল করা, তারপরে ভেরিয়েবল থেকে নম্বরটি অ্যাক্সেস করা সমস্ত ওভারহেড।
উইকিপিডিয়া আমাদের কভার করেছে :
কম্পিউটার সায়েন্সে ওভারহেডকে সাধারণত অতিরিক্ত বা অপ্রত্যক্ষ গণনার সময়, মেমরি, ব্যান্ডউইথ বা অন্য কোনও সংস্থার সমন্বয় হিসাবে বিবেচনা করা হয় যা নির্দিষ্ট লক্ষ্য অর্জনের জন্য প্রয়োজনীয়। এটি ইঞ্জিনিয়ারিং ওভারহেডের একটি বিশেষ ক্ষেত্রে।
ওভারহেড সাধারণত অতিরিক্ত প্রোগ্রামিং অ্যালগরিদমগুলি যে পরিমাণ অতিরিক্ত সংস্থান (মেমরি, প্রসেসর, সময় ইত্যাদি) গ্রহণ করে তা বোঝায়।
উদাহরণস্বরূপ, ভারসাম্য বাইনারি ট্রিতে সন্নিবেশ করানোর ওভারহেড সাধারণ লিঙ্কযুক্ত তালিকার একই সন্নিবেশের চেয়ে অনেক বেশি বড় হতে পারে (সন্নিবেশটি আরও বেশি সময় লাগবে, গাছের ভারসাম্য বজায় রাখতে আরও প্রসেসিং শক্তি ব্যবহার করবে, যার ফলস্বরূপ একটি দীর্ঘতর পার্শ্বযুক্ত অপারেশন সময় হবে ব্যবহারকারী).
কোনও প্রোগ্রামারের জন্য ওভারহেড সেই সিস্টেম সংস্থানগুলিকে বোঝায় যেগুলি আপনার কোড দ্বারা গ্রাস করা হয় যখন কোনও ইনপুট ডেটার একটি সেটে কোনও প্রদান প্ল্যাটফর্মে চলমান থাকে। সাধারণত এই শব্দটি বিভিন্ন প্রয়োগ বা সম্ভাব্য প্রয়োগের সাথে তুলনা করার প্রসঙ্গে ব্যবহৃত হয়।
উদাহরণস্বরূপ আমরা বলতে পারি যে একটি নির্দিষ্ট পদ্ধতির জন্য যথেষ্ট পরিমাণে সিপিইউ ওভারহেড ব্যয় হতে পারে অন্যদিকে মেমরির ওভারহেড বেশি লাগতে পারে এবং অন্যজন ওভারহেডের নেটওয়ার্কের ওজনে ভারী হতে পারে (এবং উদাহরণস্বরূপ একটি বাহ্যিক নির্ভরতা আবশ্যক)।
আসুন একটি নির্দিষ্ট উদাহরণ দিন: সংখ্যার একটি সংখ্যার গড় (গাণিতিক গড়) গণনা করুন।
স্পষ্ট পন্থা হ'ল ইনপুটগুলি লুপ করা, একটি চলমান মোট এবং একটি গণনা রেখে। শেষ সংখ্যাটি যখন সম্মুখীন হয় ("ফাইলের শেষ" ইওএফ, বা কিছু সেন্ডিনেল মান, বা কিছু জিইআইআই বোতাম, যাই হোক না কেন দ্বারা সংকেত দেওয়া হয়) তখন আমরা কেবল ইনপুট সংখ্যার দ্বারা মোট ভাগ করে দেই এবং আমাদের কাজ শেষ হয়ে গেল।
এই পদ্ধতির সিপিইউ, মেমরি বা অন্যান্য সংস্থানগুলির ক্ষেত্রে প্রায় কোনও ওভারহেড আসে না। (এটি একটি তুচ্ছ কাজ)
আর একটি সম্ভাব্য পন্থা হ'ল তালিকার ইনপুটটিকে "স্লুর্প" করা। যোগফল গণনা করতে তালিকার উপরে পুনরাবৃত্তি করুন, তারপরে তালিকা থেকে বৈধ আইটেমের সংখ্যা দ্বারা এটি ভাগ করুন।
তুলনা করে এই পদ্ধতির স্বতঃস্ফূর্ত পরিমাণ মেমরি ওভারহেড বহন করতে পারে।
একটি বিশেষ খারাপ বাস্তবায়নে আমরা পুনরাবৃত্তির সাহায্যে যোগফল পরিচালনা করতে পারি তবে লেজ-বিলোপ ছাড়াই। এখন, আমাদের তালিকার জন্য মেমরির ওভারহেড ছাড়াও আমরা স্ট্যাক ওভারহেড প্রবর্তন করছি (যা মেমরির একটি পৃথক ধরণের এবং মেমরির অন্যান্য ফর্মগুলির তুলনায় প্রায়শই একটি সীমাবদ্ধ উত্স)।
তবুও আরও একটি (তর্কযুক্তভাবে আরও অযৌক্তিক) পদ্ধতিটি হ'ল সমস্ত ইনপুটগুলি কোনও আরডিবিএমএসে কিছু এসকিউএল টেবিলের সাথে পোস্ট করা। তারপরে সেই টেবিলের সেই কলামে কেবল এসকিউএল এসইউএম ফাংশনটি কল করা। এটি আমাদের স্থানীয় স্মৃতি ওভারহেডকে অন্য কোনও সার্ভারে স্থানান্তর করে এবং আমাদের এক্সিকিউশনে নেটওয়ার্ক ওভারহেড এবং বাহ্যিক নির্ভরতা অনুপস্থিত। (নোট করুন যে রিমোট সার্ভারের এই কাজের সাথে কোনও নির্দিষ্ট মেমরির ওভারহেড জড়িত থাকতে পারে বা নাও থাকতে পারে --- এটি সমস্ত মানকে অবিলম্বে স্টোরেজে সরিয়ে দিতে পারে), উদাহরণস্বরূপ।
হাইপোথিটিক্যালি কোনও ধরণের ক্লাস্টারের উপর প্রয়োগ বাস্তবায়নের বিষয়টি বিবেচনা করতে পারে (সম্ভবত ট্রিলিয়নের মূল্যবোধের গড়কে সম্ভাব্য করে তোলা যায়)। এই ক্ষেত্রে মানগুলির কোনও প্রয়োজনীয় এনকোডিং এবং বিতরণ (সেগুলি নোডগুলিতে ম্যাপিং করা) এবং ফলাফলের সংগ্রহ / সংকলন (হ্রাস) ওভারহেড হিসাবে গণ্য হবে।
আমরা প্রোগ্রামারের নিজস্ব কোডের বাইরেও কারণগুলির দ্বারা উত্পন্ন ওভারহেড সম্পর্কে কথা বলতে পারি। উদাহরণস্বরূপ 32 বা 64 বিট প্রসেসরের জন্য কিছু কোড সংকলন একটি পুরানো 8-বিট বা 16-বিট আর্কিটেকচারের জন্য দেখতে দেখতে তার চেয়ে বেশি ওভারহেড লাগতে পারে। এটিতে বৃহত্তর মেমরি ওভারহেড (প্রান্তিককরণের সমস্যাগুলি) বা সিপিইউ ওভারহেড (যেখানে সিপিইউ বিট অর্ডার বা সামঞ্জস্যবিহীন নির্দেশাবলীর ব্যবহার ইত্যাদি) বা উভয়ই জোর করে involve
মনে রাখবেন যে আপনার কোড এবং এটির লাইব্রেরি ইত্যাদির দ্বারা নেওয়া ডিস্কের স্থানটিকে সাধারণত "ওভারহেড" হিসাবে উল্লেখ করা হয় না বরং তাকে "পদচিহ্ন" বলা হয়। এছাড়াও আপনার প্রোগ্রামটি যে বেস মেমোরিটি গ্রাস করে (কোনও প্রক্রিয়াজাতকরণের ডেটা সেট বিবেচনা না করে) তার "পায়ের ছাপ "ও বলে।
ওভারহেড হ'ল প্রোগ্রামের প্রয়োগে আরও বেশি সময় খরচ হয়। উদাহরণ; যখন আমরা কোনও ফাংশনকে কল করি এবং এর নিয়ন্ত্রণটি যেখানে সংজ্ঞায়িত হয় এবং তারপরে তার দেহটি কার্যকর হয়, তার অর্থ আমরা আমাদের সিপিইউকে দীর্ঘ প্রক্রিয়াতে চালিত করি (প্রথমে কন্ট্রোলটিকে স্মৃতিতে অন্য স্থানে পাস করে এবং তারপর সেখানে কার্যকর করি এবং তারপরে নিয়ন্ত্রণটি পূর্ববর্তী অবস্থানে ফিরিয়ে দেওয়া), ফলস্বরূপ এটি প্রচুর কার্যকারিতা সময় নেয়, সুতরাং ওভারহেড। আমাদের লক্ষ্যগুলি হ'ল ফাংশন সংজ্ঞা এবং কল করার সময় ইনলাইনটি ব্যবহার করে এই ওভারহেড হ্রাস করা, যা ফাংশন কলটিতে ফাংশনের বিষয়বস্তু অনুলিপি করে তাই আমরা নিয়ন্ত্রণটি অন্য কোনও স্থানে পৌঁছে দিই না, তবে আমাদের প্রোগ্রামটিকে একটি লাইনে চালিয়ে যাই, সুতরাং ইনলাইন ।
আপনি একটি অভিধান ব্যবহার করতে পারেন। সংজ্ঞা একই। তবে আপনার সময় সাশ্রয়ের জন্য ওভারহেডের উত্পাদনশীল কাজ করা দরকার। উদাহরণস্বরূপ, একটি অ্যালগরিদম চালিত হয় এবং দরকারী কাজ করে তবে এর কাজটি করার জন্য মেমরির প্রয়োজন। এই মেমরির বরাদ্দ সময় নেয়, এবং সরাসরি করা কাজটির সাথে সম্পর্কিত নয়, তাই ওভারহেড।
আপনি উইকিপিডিয়া চেক করতে পারেন । তবে প্রধানত যখন আরও ক্রিয়া বা সংস্থান ব্যবহৃত হয়। আপনি যদি নেট .NET এর সাথে পরিচিত হন তবে আপনার মান ধরণের এবং রেফারেন্সের ধরণ থাকতে পারে Like মানের ধরণের চেয়ে মেমরির প্রয়োজন হওয়ায় রেফারেন্স ধরণের মেমরির ওভারহেড থাকে।
ওভারহেডের একটি কংক্রিট উদাহরণ হ'ল "স্থানীয়" পদ্ধতি কল এবং একটি "রিমোট" পদ্ধতি কলের মধ্যে পার্থক্য।
উদাহরণস্বরূপ, ক্লাসিক আরপিসি (এবং অন্যান্য অনেক দূরবর্তী ফ্রেমওয়ার্কগুলি, যেমন ইজেবি) এর সাথে, কোনও ফাংশন বা পদ্ধতি কল কোনও কোডারকে একই দেখায় এটি সে স্থানীয়, মেমরি কল, বা বিতরণকৃত, নেটওয়ার্ক কল।
উদাহরণ স্বরূপ:
service.function(param1, param2);
এটি কি কোনও সাধারণ পদ্ধতি, না দূরবর্তী পদ্ধতি? আপনি এখানে যা দেখেন তা থেকে আপনি বলতে পারবেন না।
তবে আপনি কল্পনা করতে পারেন যে দুটি কলের মধ্যে সম্পাদনের সময়ের পার্থক্যটি নাটকীয়।
সুতরাং, মূল বাস্তবায়নটি "একই ব্যয় করবে", জড়িত "ওভারহেড" একেবারেই আলাদা।
এটি নিজে ডেটা ছাড়া অন্য কিছু, যেমন টিসিপি পতাকা, শিরোনাম, সিআরসি, এফসিএস ইত্যাদি ..