কেন বিভিন্ন জাভা সংগ্রহের আলাদা আলাদা ডিফল্ট ক্ষমতা থাকে?


11

বিভিন্ন সংগ্রহকারী নির্মাণকারীর দিকে তাকালে প্রশ্নটি মনে আসে। অ্যারেলিস্ট () দশটির প্রাথমিক ক্ষমতার সাথে একটি খালি তালিকা তৈরি করে এবং অ্যারেডেক () প্রাথমিক উপাদান সহ খালি অ্যারে ডেকটি তৈরি করে 16 টি উপাদান রাখে।


আমার নতুনের ধারণক্ষমতা ছিল না। আমি কেবল যুক্ত () যুক্ত করে নতুন উপাদান যুক্ত করব। এটা সবসময় কাজ করে।
তুলাইনস কর্ডোভা

1
আমার মনে হয় তিনি অ্যারেলিস্ট বাস্তবায়নের অভ্যন্তরে অ্যারের প্রাথমিক অ্যারের আকারের কথা বলছেন। এর নামটি থেকে বোঝা যায়, অ্যারেলিস্টগুলি কভারগুলির নীচে কেবল একটি সরল-পুরানো অ্যারে এবং এটির বর্তমান অ্যারে আকারের চেয়ে আরও বেশি উপাদান যুক্ত করার চেষ্টা করার পরে এটি স্বয়ংক্রিয়ভাবে বৃহত্তর অ্যারে তৈরি করে।
dsw88

1
আমার মনে হয় স্ট্রিংবিল্ডার আরেকটি যার ডিফল্ট ক্ষমতা রয়েছে এটি ছিল 10 বা 16?
ইনগো

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

উত্তর:


17

সংক্ষিপ্ত উত্তর

কারণ অ্যারেডেক ক্ষমতা দুইটি হতে হবে এবং দু'জনের মধ্যে সর্বনিম্ন 10 হ'ল ক্ষুদ্রতম শক্তি।


অ্যারেডেককে বৃত্তাকার বলে ভান করে এমন লিনিয়ার অ্যারের চারপাশে लपेटতে সর্বত্র প্রচুর% অপারেশন ব্যবহার করা প্রয়োজন।

a % bযেমন প্রকাশ করা যেতে পারে a & (b - 1) যদি b দুই একটি শক্তি। বিটওয়াইস এবং বৃহত্তরভাবে দ্রুত তাই অ্যারেডেকের ক্ষমতা দুইটির শক্তি হিসাবে সীমাবদ্ধ। সমস্ত% অপারেশন বাস্তবায়নের ক্ষেত্রে প্রকৃত% এর পরিবর্তে বিটমাস্কিং দিয়ে সম্পাদিত হয়।

এই কারণেই নতুন হাশম্যাপ প্রাইম নম্বর টেবিলের আকারগুলি ব্যবহার করে না তবে দুটির শক্তি , কারণ% অপারেশনটি প্রায়শই এবং বিটওয়াইস করার প্রয়োজন হয় এবং এটি আরও দ্রুত।

সুতরাং যদি বেসলাইনটি 10 ​​হয়, তবে দুটি সীমাবদ্ধতার শক্তিযুক্ত স্ট্রাকচারগুলিতে 16 বেকেস ব্যবহার করা উচিত এটি দুটির মধ্যে সর্বনিম্ন শক্তি যা কমপক্ষে 10।


3

কোনও সুনির্দিষ্ট কারণ না থাকার সম্ভাবনা বাদ দিন না।

এটি হতে পারে যে এই দুটি সংগ্রহ বিভিন্ন দল লিখেছেন। উভয়ই ডিফল্ট ক্ষমতা হিসাবে অল্প সংখ্যক বেছে নিয়েছিল, তবে প্রথম দলটি দশমিকভাবে চিন্তা করেছিল এবং 10 বেছে নেবে, যখন দ্বিতীয় দল বাইনারি ভেবেছিল এবং 16 পছন্দ করে।


1

@ এসেইলিজার উত্তর এই নির্দিষ্ট ক্ষেত্রে ভাল।

আরও সাধারণভাবে, এটি একটি বাণিজ্য-অফ যা অনেক কারণের উপর নির্ভর করে। আমি কয়েকটি উদাহরণ দেব:

  • সাধারণত ডেটা স্ট্রাকচার কীভাবে ব্যবহৃত হয় ? ডেটা স্ট্রাকচার যা ডেটা বাফার হিসাবে ব্যবহৃত হয় সাধারণত ছোট টিউপসগুলির জন্য ব্যবহৃত ডেটা স্ট্রাকচারের চেয়ে সাধারণত অনেক বেশি ক্ষমতা পছন্দ করে।
  • আপনার টার্গেট সিপিইউ প্ল্যাটফর্মে কোন ডিফল্ট আকারের ডেটা ক্যাশে লাইনে ফিট করে? ডিফল্ট যদি ক্যাশে লাইনে ফিট করে তবে এটি কার্য সম্পাদনে বড় পার্থক্য আনতে পারে। জাভাতে ডিফল্ট হিসাবে 10 টির পছন্দটি ভাল হতে পারে কারণ 10 32-বিট শব্দের অতিরিক্ত অ্যারে / অবজেক্ট ওভারহেড একটি 64 বাইট ক্যাশে লাইনে ফিট করে।
  • রানটাইম দক্ষতা বনাম আপনি কতটা মূল্যবান ? আপনি যদি রানটাইমের আরও ভাল পারফরম্যান্স চান তবে অতিরিক্ত পুনরায় বরাদ্দ পরবর্তী সময়ে এড়াতে আরও বেশি জায়গা প্রাক-বরাদ্দ করা ভাল।

এই ট্রেড-অফগুলির ফলস্বরূপ, এটি বেশ বোঝা যায় যে বিভিন্ন সংগ্রহ বাস্তবায়নের আলাদা অনুকূল ডিফল্ট ক্ষমতা থাকতে পারে।

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