HeadlinesBriefing favicon HeadlinesBriefing.com

JDK 28 ভ্যালু ক্লাস প্রিভিউ ফিচার অপ্টিমাইজেশন

Hacker News •
×

এই পোস্টটি JDK 28-এ প্রিভিউ ফিচার নিয়ে আলোচনা করে, বিশেষ করে JEP 401, একটি বড় Valhalla মাইলস্টোন যা প্রিভিউ ফিচার হিসেবে সংহত করা হয়েছে। ভ্যালু ক্লাস প্রোগ্রাম সেমান্টিক্স এবং JVM-র জন্য উপলব্ধ অপ্টিমাইজেশন সুযোগ যোগাযোগ করার ক্ষমতা বাড়ায়। যাইহোক, সাধারণ ক্লাস একটি পারফরম্যান্স ফ্লোর প্রদান করে এবং ভ্যালু ক্লাস সেটির নিচে যেতে পারে না এই বিশ্বাসটি ভুল। একটি ভালো উদ্দেশ্যের প্রোগ্রাম মেথডগুলো ইন্টারঅ্যাক্ট করলে JVM-কে ফ্ল্যাটেনড এবং রেফারেন্স রিপ্রেজেন্টেশনের মধ্যে রূপান্তর করতে বাধ্য করতে পারে, যা সুবিধাগুলো বাতিল করতে পারে। ভ্যালু ক্লাসের মূল অপ্টিমাইজেশন সুবিধা হলো আইডেন্টিটি ত্যাগ করা, যা রানটাইমকে উপযুক্ত রিপ্রেজেন্টেশন বেছে নেওয়া, পয়েন্টার চেসিং এড়াতে ভ্যালু ফ্ল্যাটেন করা, এবং কম্পোনেন্টগুলো রেজিস্টার বা স্ট্যাকে স্কেলারাইজ করতে দেয়। আইডেন্টিটির প্রয়োজনীয়তা না থাকলে এস্কেপ অ্যানালিসিস তुच্ছ হয়ে যায়। ইমিউটেবিলিটি ফ্ল্যাটেনিং সক্ষম করে; JEP 539, স্ট্রিক্ট ফিল্ড ইনিশিয়ালাইজেশন, JVM-কে একটি ফাইনাল ফিল্ড এর ওপর নির্ভর করতে দেয় যা এর এনক্লোজিং অবজেক্ট পর্যবেক্ষণযোগ্য হওয়ার আগে ইনিশিয়ালাইজড হয়। যেহেতু এমন ফিল্ড পরে আপডেট করা যাবে না, JVM টর্ন অ্যাসাইনমেন্টের ঝুঁকি ছাড়া নন-এটমিক ফ্ল্যাটেনড লেআউট ব্যবহার করতে পারে। মিউটেবল ফিল্ডগুলো টিয়ার-ফ্রি অ্যাসাইনমেন্ট সংরক্ষণ করতে হবে। যদি একটি মিউটেবল ফিল্ডে এমন মান থাকে যা এটমিক ফ্ল্যাটেনড আপডেটের জন্য খুব বড়, তবে JVM-কে রেফারেন্স লেআউট ব্যবহার করতে হবে। ৩২ বাইট পেলোড সহ একটি Four Longs রেকর্ড বিবেচনা করুন; এটমিক ফ্ল্যাটেনড আপডেটের জন্য খুব বড়। কিন্তু Envelope রেকর্ডে, পেলোড একটি স্ট্রিক্টলি ইনিশিয়ালাইজড ফাইনাল ফিল্ড, যা নন-এটমিক ফ্ল্যাটেনড লেআউট অনুমতি দেয়। যদি Envelope মিউটেবল হতো, তাহলে লেআউট কনসিস্টেন্সি বজায় রাখতে REGULAR-এ ফিরে যেতো।