লিনকুইয়ের প্রশ্নগুলি অলস । এর অর্থ কোড:
var things = mythings
.Where(x => x.IsSomeValue)
.Where(y => y.IsSomeOtherValue);
খুব অল্প করে। প্রকৃত গণনাযোগ্য ( mythings
) কেবল তখনই গণনা করা হয় যখন ফলাফলযুক্ত গণনা করা ( things
) গ্রাস করা হয়, যেমন foreach
লুপ দ্বারা .ToList()
, বা .ToArray()
।
আপনি যদি কল করেন তবে things.ToList()
এটি গণকগণের কাছ থেকে সম্ভবত কিছুটা (সাধারণত তুচ্ছ) ওভারহেড সহ মোটামুটিভাবে আপনার পরবর্তী কোডের সমান equivalent
তেমনিভাবে, আপনি যদি ফোরচ লুপ ব্যবহার করেন:
foreach (var t in things)
DoSomething(t);
এটি পারফরম্যান্সেও অনুরূপ:
foreach (var t in mythings)
if (t.IsSomeValue && t.IsSomeOtherValue)
DoSomething(t);
অগণিতদের জন্য অলসতার পদ্ধতির কিছু কার্যকারিতা সুবিধা (সমস্ত ফলাফল গণনা করার জন্য এবং একটি তালিকায় সেগুলি সঞ্চয় করার বিপরীতে) হ'ল এটি খুব কম স্মৃতি ব্যবহার করে (যেহেতু কেবলমাত্র একটি ফলাফল একসাথে সংরক্ষণ করা হয়) এবং এর কোনও উল্লেখযোগ্য পরিমাণ নেই -প্রথম খরচ
যদি সংখ্যাটি কেবল আংশিকভাবে গণনা করা হয় তবে এটি বিশেষভাবে গুরুত্বপূর্ণ। এই কোডটি বিবেচনা করুন:
things.First();
যেভাবে লিনকিউ বাস্তবায়িত করা হয়েছে, mythings
কেবলমাত্র সেখানে আপনার প্রাথমিক অবস্থার সাথে মেলে এমন প্রথম উপাদান পর্যন্ত গণনা করা হবে। যদি সেই উপাদানটি তালিকার শুরুতে থাকে তবে এটি ও (এন) এর পরিবর্তে বিশাল পারফরম্যান্স বুস্ট (যেমন ও (1)) হতে পারে।