অবশ্যই পারফরম্যান্সের মধ্যে পার্থক্য রয়েছে, .Where()
প্রতিটি আইটেমের জন্য ডেলিগেট কল করা ফলাফল। তবে আমি পারফরম্যান্স নিয়ে মোটেই চিন্তিত হব না:
কোনও প্রতিনিধিকে আহ্বান জানাতে ব্যবহৃত ক্লকচক্রগুলি কোডটির বাকী কোড দ্বারা ব্যবহৃত ক্লকচক্রের তুলনায় নগন্য যা এই সংগ্রহটি পুনরুক্ত করে এবং শর্তগুলি পরীক্ষা করে।
কোনও প্রতিনিধিকে আহ্বান করার পারফরম্যান্স পেনাল্টিটি কয়েকটি ঘড়ির চক্রের ক্রম এবং ভাগ্যক্রমে, আমরা অনেক দিন অতিবাহিত করেছি যখন আমাদের ব্যক্তিগত ঘড়ির চক্র সম্পর্কে চিন্তিত হয়েছিল।
যদি কোনও কারণে কর্মক্ষেত্রটি আপনার জন্য ঘড়ির চক্র স্তরে সত্যিই গুরুত্বপূর্ণ হয়, তবে তার List<Item>
পরিবর্তে ব্যবহার করুন IList<Item>
, যাতে সংকলক ভার্চুয়াল কলগুলির পরিবর্তে সরাসরি (এবং ইনলাইনেবল) কলগুলি ব্যবহার করতে পারে, এবং যাতে পুনরুক্তিকারী List<T>
, যা আসলে ক struct
, বক্স করা হবে না। তবে তা আসলেই ছোট ছোট জিনিস।
একটি ডাটাবেস ক্যোয়ারী একটি পৃথক পরিস্থিতি, কারণ সেখানে (কমপক্ষে তত্ত্বের ক্ষেত্রে) ফিল্টারটি আরডিবিএমএসে প্রেরণের সম্ভাবনা রয়েছে, এইভাবে পারফরম্যান্সের ব্যাপক উন্নতি ঘটে: কেবলমাত্র সারি সারিগুলি আপনার প্রোগ্রামে আরডিবিএমএস থেকে ট্রিপ তৈরি করবে। তবে তার জন্য আমি মনে করি আপনাকে লিনক ব্যবহার করতে হবে, আমি মনে করি না যে এই অভিব্যক্তিটি আরডিবিএমএস-তে যেমন পাঠানো যেতে পারে।
আপনি if(x) continue;
এই কোডটি ডিবাগ করার মুহূর্তের সুবিধাগুলি সত্যিই দেখতে পাবেন : একক পদক্ষেপ if()
এবং continue
গুলি খুব ভালভাবে কাজ করে; ফিল্টারিং প্রতিনিধি একক পদক্ষেপ একটি ব্যথা হয়।