আমি কেবল লক্ষ্য করেছি যে প্রতিটি আধুনিক ওও প্রোগ্রামিং ল্যাঙ্গুয়েজের সাথে আমি কমপক্ষে কিছুটা পরিচিত (যা মূলত কেবল জাভা, সি # এবং ডি) সমবয়সী অ্যারেগুলিকে অনুমতি দেয়। এটি একটি স্ট্রিং অ্যারে হ'ল একটি অবজেক্ট অ্যারে:
Object[] arr = new String[2]; // Java, C# and D allow this
কোভেরিয়েন্ট অ্যারেগুলি স্ট্যাটিক টাইপ সিস্টেমে একটি গর্ত। তারা টাইপ ত্রুটিগুলি সম্ভব করে তোলে যা সংকলন সময়ে সনাক্ত করা যায় না, সুতরাং অ্যারেতে লেখা প্রতিটি লেখার সময় রানটাইমের সময় পরীক্ষা করা উচিত:
arr[0] = "hello"; // ok
arr[1] = new Object(); // ArrayStoreException
এটি যদি আমি প্রচুর অ্যারে স্টোর করি তবে এটি একটি ভয়াবহ পারফরম্যান্সের মতো বলে মনে হচ্ছে।
সি ++ তে কোভারিয়েন্ট অ্যারে নেই, সুতরাং এই জাতীয় রানটাইম চেক করার দরকার নেই, যার অর্থ কোনও পারফরম্যান্স পেনাল্টি নেই।
রানটাইম চেকগুলির সংখ্যা কমাতে কোনও বিশ্লেষণ করা আছে কি? উদাহরণস্বরূপ, যদি আমি বলি:
arr[1] = arr[0];
যে কেউ তর্ক করতে পারে যে দোকানটি সম্ভবত ব্যর্থ হতে পারে না। আমি নিশ্চিত যে প্রচুর অন্যান্য সম্ভাব্য অপটিমাইজেশন রয়েছে যা আমি ভেবে দেখিনি।
আধুনিক সংকলকরা কি আসলে এই ধরণের অপ্টিমাইজেশানগুলি করেন বা আমার কি এই সত্যের সাথে বাঁচতে হবে, উদাহরণস্বরূপ, একটি কুইকোর্ট সর্বদা ও (এন লগ এন) অপ্রয়োজনীয় রানটাইম চেক করে?
আধুনিক ওও ভাষাগুলি সহ-বৈকল্পিক অ্যারেগুলিকে সমর্থন করে তৈরি করা ওভারহেড এড়াতে পারে?