তত্ত্ব অনুসারে, অতিরিক্ত লুকানো this
প্যারামিটারের কারণে একটি স্থিতিশীল পদ্ধতিটি উদাহরণের পদ্ধতির চেয়ে কিছুটা ভাল সম্পাদন করা উচিত, অন্য সমস্ত জিনিস সমান ।
বাস্তবে, এটি এত সামান্য পার্থক্য করে যে এটি বিভিন্ন সংকলক সিদ্ধান্তের শোরগারে লুকিয়ে থাকবে hidden (অতএব দ্বিমত পোষণকারী ফলাফলের সাথে দু'জন একজনের চেয়ে একজনের চেয়ে ভাল "প্রমাণ" করতে পারে)। this
সাধারণত কোনও রেজিস্টারে পাস হওয়ার পরে এবং প্রায়শই সেই রেজিস্টারে থাকায় শুরু হয় না।
এই শেষ পয়েন্টটির অর্থ হ'ল তত্ত্ব অনুসারে, আমাদের এমন একটি স্থিতিশীল পদ্ধতি আশা করা উচিত যা কোনও বস্তুকে প্যারামিটার হিসাবে গ্রহণ করে এবং তার সাথে কিছু করে সেই একই বস্তুর উদাহরণ হিসাবে সমমানের চেয়ে কিছুটা কম ভাল হয়। তবুও, পার্থক্যটি এতটা সামান্য যে আপনি এটি পরিমাপ করার চেষ্টা করলে আপনি সম্ভবত অন্য কোনও সংকলক সিদ্ধান্তের পরিমাপ করবেন। (বিশেষত সেই রেফারেন্সটি যদি রেজিস্টারে থাকে তবে পুরো সময়টি বেশ বেশি থাকে since
প্রকৃত পারফরম্যান্সের পার্থক্যগুলি নেমে আসবে আপনি কৃত্রিমভাবে মেমরিতে কিছু পেয়েছিলেন যা প্রাকৃতিকভাবে স্থিতিশীল হওয়া উচিত, বা প্রাকৃতিকভাবে হওয়া উচিত এমন জটিল পদ্ধতিতে আপনি অবজেক্ট-পাসিংয়ের শৃঙ্খলে জড়িয়ে যাচ্ছেন।
অত: পর সংখ্যা 1. যখন রাষ্ট্র পালন একটি উদ্বেগের বিষয় নয়, এটি সবসময় ভাল স্ট্যাটিক হতে পারে, এর কারণ যে কী স্ট্যাটিক হয় । এটি একটি পারফরম্যান্সের উদ্বেগ নয়, যদিও সংকলক অপটিমাইজেশনগুলির সাথে সুন্দরভাবে খেলার সামগ্রিক নিয়ম রয়েছে - এটি সম্ভবত সম্ভবত যে কেউ এইসব ক্ষেত্রে অদ্ভুত ব্যবহারের সাথে আসে তার চেয়ে সাধারণ ব্যবহারের ক্ষেত্রে অনুকূলিতকরণের প্রচেষ্টাতে যায়।
সংখ্যা 2 কোন পার্থক্য করে না। প্রতিটি সদস্যের জন্য প্রতি শ্রেণীর ব্যয়ের একটি নির্দিষ্ট পরিমাণ রয়েছে এটি কতটা মেটাডেটা আছে তা বোঝায়, প্রকৃত ডিএলএল বা এক্সইএল ফাইলে কত কোড আছে এবং কতটা জিটযুক্ত কোড থাকবে তা উভয়েরই শর্তাবলী। এটি উদাহরণস্বরূপ বা স্থির হোক না কেন এটি একই।
আইটেম 3 সঙ্গে, this
হিসাবে this
আছে। তবে দ্রষ্টব্য:
this
পরামিতি একটি নির্দিষ্ট রেজিস্টার পাস করা হয়। একই ক্লাসের মধ্যে একটি উদাহরণ পদ্ধতি কল করার সময়, সম্ভবত এটি ইতিমধ্যে সেই রেজিস্টারে থাকবে (যদি তা স্ট্যাশ করা না হয় এবং কোনও কারণে নিবন্ধক ব্যবহার না করা হয়) এবং সুতরাং this
এটিতে সেট করার দরকার নেই তে সেট করার জন্য কোনও পদক্ষেপ নেই । এটি একটি নির্দিষ্ট পরিমাণে প্রযোজ্য উদাহরণের জন্য প্রথম দুটি পরামিতি যে কলটি করা হয় তার প্রথম দুটি পরামিতি method
যেহেতু এটি পরিষ্কার হবে যে this
এটি নাল নয়, এটি কিছু ক্ষেত্রে কলগুলি অনুকূল করতে ব্যবহৃত হতে পারে।
যেহেতু এটি স্পষ্ট হবে যে this
এটি নাল নয়, সুতরাং এটি ইনডিল পদ্ধতিতে কলগুলি আরও কার্যকর করতে পারে, কারণ পদ্ধতি কলটি তৈরির জন্য উত্পন্ন কোডটি যে কোনওভাবে নাল-চেকের প্রয়োজন হতে পারে তা বাদ দিতে পারে।
বলেছিল, নাল চেকস সস্তা!
এটি লক্ষণীয় যে জেনেরিক স্ট্যাটিক পদ্ধতিগুলি কোনও বস্তুর উপর কাজ করে উদাহরণস্বরূপ পদ্ধতিগুলির পরিবর্তে http://joeduffyblog.com/2011/10/23/on-generics- এবং- some- of- এ আলোচিত কিছু ব্যয় হ্রাস করতে পারে সম্পর্কিত-ওভারহেডস / সেই ক্ষেত্রে যেখানে প্রদত্ত স্ট্যাটিক কোনও নির্দিষ্ট ধরণের জন্য ডাকা হয় না। তিনি যেমন এটি রেখেছেন "একদিকে যেমন, এটি প্রমাণিত হয় যে জেনেরিক বিমূর্ততা আরও বেশি প্লে-প্লে করার জন্য এক্সটেনশন পদ্ধতিগুলি দুর্দান্ত উপায়।"
তবে নোট করুন যে এটি কেবল পদ্ধতি দ্বারা ব্যবহৃত অন্য ধরণের ইনস্ট্যান্টেশনের সাথে সম্পর্কিত, যা অন্যথায় বিদ্যমান নেই। যেমনটি, এটি সত্যিই প্রচুর ক্ষেত্রে প্রযোজ্য হয় না (অন্য কোনও উদাহরণ পদ্ধতি সেই ধরণের ব্যবহৃত হয়, অন্য কোনও কোড অন্য কোথাও এই ধরণের ব্যবহার করে)।
সারসংক্ষেপ:
- বেশিরভাগ ক্ষেত্রে স্থির বনাম স্ট্যাটিকের পারফরম্যান্স ব্যয়গুলি নগন্যতার নিচে।
- সাধারণত যেগুলি ব্যয় হয় তা আসবে যেখানে আপনি উদাহরণস্বরূপ বা তদ্বিপরীত পক্ষে স্থির অপব্যবহার করবেন। আপনি যদি এটিকে স্থির এবং উদাহরণের মধ্যে আপনার সিদ্ধান্তের অংশ না করেন তবে আপনার সঠিক ফলাফল পাওয়ার সম্ভাবনা বেশি।
- এমন বিরল ক্ষেত্রে দেখা যায় যে স্থির জেনেরিক পদ্ধতিতে অন্য ধরণের ফলস্বরূপ কিছু কম সংখ্যক সৃষ্টি হয়, উদাহরণস্বরূপ জেনেরিক পদ্ধতিগুলি এর ফলে এটি কখনও কখনও ব্যবহৃত হয় খুব কম ব্যবহার করে (এবং "খুব কমই" বোঝায় যে কোন ধরণের সাথে এটি ব্যবহৃত হয়) আবেদনের জীবদ্দশায়, এটি প্রায়শই বলা হয় না)। একবার আপনি এই নিবন্ধে তিনি কী বলছেন তা পেয়ে গেলে আপনি দেখতে পাবেন এটি যে কোনওভাবেই স্থির-বনাম-উদাহরণের সিদ্ধান্তের তুলনায় 100% অপ্রাসঙ্গিক। সম্পাদনা করুন: এবং এর বেশিরভাগই কেবল ব্যয়িত কোড সহ নয়, এনজেন সহ gen
সম্পাদনা করুন: ঠিক কতটা নাল চেক (যা আমি উপরে দাবি করেছি) এর একটি নোট। বেশিরভাগ নাল চেক করে। নেট মোটেই শূন্যতার জন্য যাচাই করে না, বরং এটি কাজ করবে এই ধারণা নিয়ে তারা যা করতে যাচ্ছিল তা চালিয়ে যায়, এবং যদি অ্যাক্সেস ব্যতিক্রম ঘটে তবে তা একটিতে পরিণত হয় NullReferenceException
। যেমন, বেশিরভাগ ক্ষেত্রে যখন ধারণাগতভাবে সি # কোডটি একটি নাল চেক জড়িত কারণ এটি একটি উদাহরণ সদস্যের অ্যাক্সেস করছে, এটি সফল হলে ব্যয়টি আসলে শূন্য হয়। একটি ব্যতিক্রম কিছু অন্তর্নিহিত কল হতে পারে, (কারণ তারা উদাহরণস্বরূপ সদস্য হিসাবে পরিচিত হিসাবে আচরণ করতে চায়) এবং তারা ঠিক একই আচরণ ট্রিগার করার জন্য একটি ক্ষেত্রের উপর আঘাত করে, তাই এগুলি খুব সস্তা এবং এখনও তারা প্রায়শই যাহাই হউক না কেন ছেড়ে যেতে পারে way (উদাহরণস্বরূপ, যদি পদ্ধতির প্রথম পদক্ষেপটি কোনও ক্ষেত্রের মতো অ্যাক্সেসে জড়িত)।