java - জাভা মধ্যে পদ্ধতি পরামিতি ফিক্স ঘোষণা কোন কর্মক্ষমতা কারণ আছে?




performance final (4)

আমি কম্পাইলারটি সম্ভবত সমস্ত ব্যক্তিগত স্ট্যাটিক চূড়ান্ত ভেরিয়েবলগুলিকে সরাতে পারি যা একটি প্রাথমিক টাইপ, যেমন int হিসাবে, এবং একটি সি ++ ম্যাক্রোর মতো কোডে সরাসরি ইনলাইন করে।

যাইহোক, যদি এটি অনুশীলন করা হয় তবে আমার কোন সূত্র নেই তবে কিছু স্মৃতি সংরক্ষণ করার জন্য এটি করা যেতে পারে।

জাভা মধ্যে পদ্ধতি পরামিতি ফিক্স ঘোষণা কোন কর্মক্ষমতা কারণ আছে?

যেমন:

public void foo(int bar) { ... }

বনাম:

public void foo(final int bar) { ... }

অনুমান যে bar শুধুমাত্র পড়তে এবং foo() মধ্যে সংশোধন করা হয় না।


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


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

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


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







final