"ওভারহেড" কী?


149

আমি কম্পিউটার সায়েন্সের একজন ছাত্র এবং প্রোগ্রাম এবং সাজানোর ক্ষেত্রে যখন "ওভারহেড" শব্দটি প্রচুর শুনছি। তুমি আসলে কি বোজাতে ছাচ্ছ?


27
কিছু পাওয়ার জন্য আপনাকে "অতিরিক্ত জিনিস" কতটা করতে হবে। উদাহরণস্বরূপ, যদি আমাকে "হ্যালো ওয়ার্ল্ড" মুদ্রণের জন্য কোনও 37 শ্রেণির প্রকল্প লোড করতে হয় তবে আমি এটিকে অনেক বেশি ওভারহেড হিসাবে বিবেচনা করব।
স্কানলিফ

1
@ Doug65536 আসলে এটি অন্যভাবে। =)
ইউকিও ফুকুজাওয়া

উত্তর:


177

কোনও অপারেশন সেটআপ করার জন্য এটি প্রয়োজনীয় সংস্থানসমূহ। এটি সম্পর্কিত নয়, তবে প্রয়োজনীয় বলে মনে হচ্ছে but

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

কম্পিউটার সায়েন্সে, কখনও কখনও আমরা রাস্তায় নামার জন্য গাড়ি ব্যবহার করি কারণ আমাদের কাছে আরও ভাল উপায় নেই, বা "কীভাবে চলতে শেখা" আমাদের সময় সাপেক্ষ নয়।


84
একটি অনুরূপ উড়ান হবে। প্লেনগুলি গাড়িগুলির চেয়ে অনেক দ্রুত, তবে বিমানবন্দর চেক-ইন, সুরক্ষা ইত্যাদির ওভারহেড গাড়িগুলিকে সংক্ষিপ্ত দূরত্বের জন্য আরও ভাল বিকল্প হিসাবে পরিণত করে।
ফোগলবার্ড

এস / ড্রাইভ / গো / (যদি আপনি কোথাও গাড়ি চালানোর প্রয়োজন হয় তবে আপনি সাধারণত হাঁটার সিদ্ধান্ত নেন না ...
আরসিআইএক্স

1
@ inf3rno বিড়ম্বনা? আমরা কীভাবে আমাদের গাড়িতে উঠব? আমরা হাঁটি. এবং আমরা পুরোপুরি ... আমাদের গাড়িতে চলতে পারি। আমরা আমাদের গন্তব্যে হাঁটতে পারি না, এমনকি এটি আমাদের গাড়ির চেয়েও কাছে।
কর্সিকা

যদি আমি বলি যে আমি লো ওভারহেড জাভা কোডটি লিখি, তবে "অপারেশন স্থাপনের জন্য প্রয়োজনীয় সংস্থানগুলি" সংজ্ঞা অনুসারে আপনি কীভাবে এটি ব্যাখ্যা করবেন? আমার কোডে খুব বেশি সেটআপ লাগবে না?
প্রতিশ্রুতিবদ্ধ 6

ঠিক আছে, আপনাকে কম্পিউটার বা সার্ভারটি চালু করতে হবে, আপনাকে অপারেটিং সিস্টেম এবং সমস্ত ড্রাইভার লোড করতে হবে, আপনাকে জাভা প্রক্রিয়া চালিয়ে যেতে হবে, আপনাকে জেভিএম চালু করতে হবে, আপনাকে আপনার সমস্ত ক্লাস লোড করতে হবে, আপনি আইও বাফারকে কনসোলে ঠিকঠাক করতে হবে যাতে আপনি আপনার "হ্যালো ওয়ার্ল্ড" করতে পারেন। তবে দয়া করে আমাকে লো ওভারহেড কোডিং সম্পর্কে আরও বলুন।
কর্সিকা

40

শব্দের অর্থ প্রসঙ্গের সাথে অনেকগুলি পৃথক হতে পারে। সাধারণভাবে, এটি ব্যবহৃত হয় এমন সংস্থানগুলি (প্রায়শই মেমরি এবং সিপিইউ সময়) যা ব্যবহারিকৃত ফলাফলের জন্য সরাসরি অবদান রাখে না, তবে ব্যবহৃত প্রযুক্তি বা পদ্ধতি দ্বারা প্রয়োজনীয়। উদাহরণ:

  • প্রোটোকল ওভারহেড : ইথারনেট ফ্রেম, আইপি প্যাকেট এবং টিসিপি বিভাগগুলিতে সকলের শিরোনাম রয়েছে, টিসিপি সংযোগগুলির হ্যান্ডশেক প্যাকেটগুলির প্রয়োজন। সুতরাং, আপনি সম্পূর্ণ ব্যান্ডউইথ ব্যবহার করতে পারবেন না হার্ডওয়্যার আপনার আসল ডেটার জন্য সক্ষম। আপনি বৃহত্তর প্যাকেট আকার ব্যবহার করে ওভারহেড হ্রাস করতে পারেন এবং ইউডিপিতে একটি ছোট শিরোনাম রয়েছে এবং কোনও হ্যান্ডশেক নেই।
  • ডেটা স্ট্রাকচার মেমরি ওভারহেড : লিঙ্কযুক্ত তালিকার প্রতিটি উপাদানগুলির জন্য কমপক্ষে একটি পয়েন্টার প্রয়োজন। যদি উপাদানগুলি পয়েন্টার হিসাবে একই আকার হয় তবে এর অর্থ একটি 50% মেমরি ওভারহেড, অন্যদিকে অ্যারেতে সম্ভাব্য 0% ওভারহেড থাকতে পারে।
  • পদ্ধতি কল ওভারহেড : একটি সু-নকশাকৃত প্রোগ্রামটি প্রচুর সংক্ষিপ্ত পদ্ধতিতে বিভক্ত। তবে প্রতিটি পদ্ধতি কলের জন্য স্ট্যাক ফ্রেম সেটআপ করা, প্যারামিটারগুলি এবং একটি ফেরতের ঠিকানা অনুলিপি করা প্রয়োজন। এটি এমন এক প্রোগ্রামের সাথে তুলনা করে সিপিইউ ওভারহেড উপস্থাপন করে যা একক একক একক কার্যক্রমে সমস্ত কিছু করে। অবশ্যই, যুক্ত রক্ষণাবেক্ষণ এটি এটিকে খুব মূল্যবান করে তোলে তবে কিছু ক্ষেত্রে অতিরিক্ত পদ্ধতি কলগুলি একটি উল্লেখযোগ্য পারফরম্যান্সের প্রভাব ফেলতে পারে।

এই উদাহরণগুলির মধ্যে শব্দের মতো শব্দগুলির একই অর্থ রয়েছে (টাস্কটি কার্যকর করার জন্য প্রয়োজনীয়, তবে এটি সর্বদা সরাসরি করার সাথে সম্পর্কিত নয়)
আরসিআইএক্স

পুনরায় ডেটা স্ট্রাকচার মেমরি ওভারহেড: বেশিরভাগ মেমরির বরাদ্দকারীদের সাথে এটি এর চেয়েও খারাপ। mallocবরাদ্দকারীর (ক্লাসিক 32-বিট মেশিন অনুমান করে) ব্লক প্লাস গার্ডের মানগুলির আকারের কারণে 8 টি বাইটের একটি বিল্ট-ইন ওভারহেড ফিরে পেয়েছে value এমনকি এটির আগেও আপনি বরাদ্দ গ্রানুলারিটি সম্পর্কে ভাবেন। সাধারণ 4 বাইট পূর্ণসংখ্যার একক লিঙ্কযুক্ত তালিকায় 75% এর ওভারহেড থাকবে; অ্যারেগুলি আরও ভাল (যদি আপনার মাঝখানে দ্রুত সন্নিবেশের প্রয়োজন না হয়) তবে তাদের একবারে ওভারহেড থাকতে পারে (বা কম যদি অ্যারেটি গতিশীলভাবে বরাদ্দ না হয়)।
ডোনাল ফেলো

19

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

কোনও কাজ সম্পাদনের জন্য ওভারহেড হ'ল কিছু নষ্ট হয়। লক্ষ্যটি খুব খুব ছোট করে ওভারহেড তৈরি করা।

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


17

উইকিপিডিয়া আমাদের কভার করেছে :

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


4
তবে এটি না হলে আপনি উইকিপিডিয়া ঠিক করে ফেলবেন এবং তারপরে এখানে একই পোস্ট করুন make
সামগুডি

11

ওভারহেড সাধারণত অতিরিক্ত প্রোগ্রামিং অ্যালগরিদমগুলি যে পরিমাণ অতিরিক্ত সংস্থান (মেমরি, প্রসেসর, সময় ইত্যাদি) গ্রহণ করে তা বোঝায়।

উদাহরণস্বরূপ, ভারসাম্য বাইনারি ট্রিতে সন্নিবেশ করানোর ওভারহেড সাধারণ লিঙ্কযুক্ত তালিকার একই সন্নিবেশের চেয়ে অনেক বেশি বড় হতে পারে (সন্নিবেশটি আরও বেশি সময় লাগবে, গাছের ভারসাম্য বজায় রাখতে আরও প্রসেসিং শক্তি ব্যবহার করবে, যার ফলস্বরূপ একটি দীর্ঘতর পার্শ্বযুক্ত অপারেশন সময় হবে ব্যবহারকারী).


5

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

উদাহরণস্বরূপ আমরা বলতে পারি যে একটি নির্দিষ্ট পদ্ধতির জন্য যথেষ্ট পরিমাণে সিপিইউ ওভারহেড ব্যয় হতে পারে অন্যদিকে মেমরির ওভারহেড বেশি লাগতে পারে এবং অন্যজন ওভারহেডের নেটওয়ার্কের ওজনে ভারী হতে পারে (এবং উদাহরণস্বরূপ একটি বাহ্যিক নির্ভরতা আবশ্যক)।

আসুন একটি নির্দিষ্ট উদাহরণ দিন: সংখ্যার একটি সংখ্যার গড় (গাণিতিক গড়) গণনা করুন।

স্পষ্ট পন্থা হ'ল ইনপুটগুলি লুপ করা, একটি চলমান মোট এবং একটি গণনা রেখে। শেষ সংখ্যাটি যখন সম্মুখীন হয় ("ফাইলের শেষ" ইওএফ, বা কিছু সেন্ডিনেল মান, বা কিছু জিইআইআই বোতাম, যাই হোক না কেন দ্বারা সংকেত দেওয়া হয়) তখন আমরা কেবল ইনপুট সংখ্যার দ্বারা মোট ভাগ করে দেই এবং আমাদের কাজ শেষ হয়ে গেল।

এই পদ্ধতির সিপিইউ, মেমরি বা অন্যান্য সংস্থানগুলির ক্ষেত্রে প্রায় কোনও ওভারহেড আসে না। (এটি একটি তুচ্ছ কাজ)

আর একটি সম্ভাব্য পন্থা হ'ল তালিকার ইনপুটটিকে "স্লুর্প" করা। যোগফল গণনা করতে তালিকার উপরে পুনরাবৃত্তি করুন, তারপরে তালিকা থেকে বৈধ আইটেমের সংখ্যা দ্বারা এটি ভাগ করুন।

তুলনা করে এই পদ্ধতির স্বতঃস্ফূর্ত পরিমাণ মেমরি ওভারহেড বহন করতে পারে।

একটি বিশেষ খারাপ বাস্তবায়নে আমরা পুনরাবৃত্তির সাহায্যে যোগফল পরিচালনা করতে পারি তবে লেজ-বিলোপ ছাড়াই। এখন, আমাদের তালিকার জন্য মেমরির ওভারহেড ছাড়াও আমরা স্ট্যাক ওভারহেড প্রবর্তন করছি (যা মেমরির একটি পৃথক ধরণের এবং মেমরির অন্যান্য ফর্মগুলির তুলনায় প্রায়শই একটি সীমাবদ্ধ উত্স)।

তবুও আরও একটি (তর্কযুক্তভাবে আরও অযৌক্তিক) পদ্ধতিটি হ'ল সমস্ত ইনপুটগুলি কোনও আরডিবিএমএসে কিছু এসকিউএল টেবিলের সাথে পোস্ট করা। তারপরে সেই টেবিলের সেই কলামে কেবল এসকিউএল এসইউএম ফাংশনটি কল করা। এটি আমাদের স্থানীয় স্মৃতি ওভারহেডকে অন্য কোনও সার্ভারে স্থানান্তর করে এবং আমাদের এক্সিকিউশনে নেটওয়ার্ক ওভারহেড এবং বাহ্যিক নির্ভরতা অনুপস্থিত। (নোট করুন যে রিমোট সার্ভারের এই কাজের সাথে কোনও নির্দিষ্ট মেমরির ওভারহেড জড়িত থাকতে পারে বা নাও থাকতে পারে --- এটি সমস্ত মানকে অবিলম্বে স্টোরেজে সরিয়ে দিতে পারে), উদাহরণস্বরূপ।

হাইপোথিটিক্যালি কোনও ধরণের ক্লাস্টারের উপর প্রয়োগ বাস্তবায়নের বিষয়টি বিবেচনা করতে পারে (সম্ভবত ট্রিলিয়নের মূল্যবোধের গড়কে সম্ভাব্য করে তোলা যায়)। এই ক্ষেত্রে মানগুলির কোনও প্রয়োজনীয় এনকোডিং এবং বিতরণ (সেগুলি নোডগুলিতে ম্যাপিং করা) এবং ফলাফলের সংগ্রহ / সংকলন (হ্রাস) ওভারহেড হিসাবে গণ্য হবে।

আমরা প্রোগ্রামারের নিজস্ব কোডের বাইরেও কারণগুলির দ্বারা উত্পন্ন ওভারহেড সম্পর্কে কথা বলতে পারি। উদাহরণস্বরূপ 32 বা 64 বিট প্রসেসরের জন্য কিছু কোড সংকলন একটি পুরানো 8-বিট বা 16-বিট আর্কিটেকচারের জন্য দেখতে দেখতে তার চেয়ে বেশি ওভারহেড লাগতে পারে। এটিতে বৃহত্তর মেমরি ওভারহেড (প্রান্তিককরণের সমস্যাগুলি) বা সিপিইউ ওভারহেড (যেখানে সিপিইউ বিট অর্ডার বা সামঞ্জস্যবিহীন নির্দেশাবলীর ব্যবহার ইত্যাদি) বা উভয়ই জোর করে involve

মনে রাখবেন যে আপনার কোড এবং এটির লাইব্রেরি ইত্যাদির দ্বারা নেওয়া ডিস্কের স্থানটিকে সাধারণত "ওভারহেড" হিসাবে উল্লেখ করা হয় না বরং তাকে "পদচিহ্ন" বলা হয়। এছাড়াও আপনার প্রোগ্রামটি যে বেস মেমোরিটি গ্রাস করে (কোনও প্রক্রিয়াজাতকরণের ডেটা সেট বিবেচনা না করে) তার "পায়ের ছাপ "ও বলে।


3

ওভারহেড হ'ল প্রোগ্রামের প্রয়োগে আরও বেশি সময় খরচ হয়। উদাহরণ; যখন আমরা কোনও ফাংশনকে কল করি এবং এর নিয়ন্ত্রণটি যেখানে সংজ্ঞায়িত হয় এবং তারপরে তার দেহটি কার্যকর হয়, তার অর্থ আমরা আমাদের সিপিইউকে দীর্ঘ প্রক্রিয়াতে চালিত করি (প্রথমে কন্ট্রোলটিকে স্মৃতিতে অন্য স্থানে পাস করে এবং তারপর সেখানে কার্যকর করি এবং তারপরে নিয়ন্ত্রণটি পূর্ববর্তী অবস্থানে ফিরিয়ে দেওয়া), ফলস্বরূপ এটি প্রচুর কার্যকারিতা সময় নেয়, সুতরাং ওভারহেড। আমাদের লক্ষ্যগুলি হ'ল ফাংশন সংজ্ঞা এবং কল করার সময় ইনলাইনটি ব্যবহার করে এই ওভারহেড হ্রাস করা, যা ফাংশন কলটিতে ফাংশনের বিষয়বস্তু অনুলিপি করে তাই আমরা নিয়ন্ত্রণটি অন্য কোনও স্থানে পৌঁছে দিই না, তবে আমাদের প্রোগ্রামটিকে একটি লাইনে চালিয়ে যাই, সুতরাং ইনলাইন ।


2

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


1

আপনি উইকিপিডিয়া চেক করতে পারেন । তবে প্রধানত যখন আরও ক্রিয়া বা সংস্থান ব্যবহৃত হয়। আপনি যদি নেট .NET এর সাথে পরিচিত হন তবে আপনার মান ধরণের এবং রেফারেন্সের ধরণ থাকতে পারে Like মানের ধরণের চেয়ে মেমরির প্রয়োজন হওয়ায় রেফারেন্স ধরণের মেমরির ওভারহেড থাকে।


1

ওভারহেডের একটি কংক্রিট উদাহরণ হ'ল "স্থানীয়" পদ্ধতি কল এবং একটি "রিমোট" পদ্ধতি কলের মধ্যে পার্থক্য।

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

উদাহরণ স্বরূপ:

service.function(param1, param2);

এটি কি কোনও সাধারণ পদ্ধতি, না দূরবর্তী পদ্ধতি? আপনি এখানে যা দেখেন তা থেকে আপনি বলতে পারবেন না।

তবে আপনি কল্পনা করতে পারেন যে দুটি কলের মধ্যে সম্পাদনের সময়ের পার্থক্যটি নাটকীয়।

সুতরাং, মূল বাস্তবায়নটি "একই ব্যয় করবে", জড়িত "ওভারহেড" একেবারেই আলাদা।


1

ওভারহেড সম্পর্কে থ্রেডগুলি পরিচালনা করতে এবং তাদের মধ্যে সমন্বয় করার জন্য প্রয়োজনীয় সময় হিসাবে চিন্তা করুন। থ্রেডে করার মতো পর্যাপ্ত কাজ না থাকলে এটি বোঝা। যেমন একটি ক্ষেত্রে ওভারহেড ব্যয় থ্রেডিং ব্যবহারের মাধ্যমে সময় সাশ্রয় হয় এবং কোডটি অনুক্রমের চেয়ে বেশি সময় নেয়।


-2

এটি নিজে ডেটা ছাড়া অন্য কিছু, যেমন টিসিপি পতাকা, শিরোনাম, সিআরসি, এফসিএস ইত্যাদি ..

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.