هنوز چند بایت مونده که پیدا کنم...

نکته ای در خصوص بهبود پرفورمنس کوئری های LINQ

در دات نت فقط وقتی واقعا دستورات لینک اجرا و محاسبه میشه که داده هاش محاسبه شده و دسترس پذیر باشه. یعنی اگر از خط اول بلاک متد مثال متد ToList رو من حذفش کنم به ازای فراخوانی متد Count یکبار و به ازای فراخوانی متد Avererage یک بار متغیر result محاسبه میشه. به این رفتار در دات نت میگن deferred execution.
 
تصور کنید در کوئری های پیچیده و سنگین با محاسبات و روابط زیاد اگر ارتباط با دیتابیس هم دخیل کنیم چقدر روی پرفرومنس ما موثر خواهد بود!
public void MyComponentLegacyMethod(List<int> masterCollection)
{
            //Without the ToList this linq query will be executed twice because of the following usage
            var result = masterCollection.Where(i => i > 100).ToList();
 
            Console.WriteLine(result.Count());
            Console.WriteLine(result.Average());
}

نکته

Using Deferred Execution While Writing LINQ Queries
نویسنده : محمد ملک مکان
شنبه 12 دی 1394
+ 161 -

خوشحال میشیم نظرتُ بدونیم