Deferred Execution এবং Immediate Execution

Microsoft Technologies - লিংক (LinQ) LINQ এবং পারফরম্যান্স অপটিমাইজেশন (LINQ Performance Optimization) |
192
192

LINQ (Language Integrated Query) কুয়েরি তৈরির সময় দুটি এক্সিকিউশন মডেল রয়েছে: Deferred Execution এবং Immediate Execution। এই দুটি কৌশল পারফরম্যান্স এবং ডেটার প্রক্রিয়াকরণ পদ্ধতিতে গুরুত্বপূর্ণ পার্থক্য তৈরি করে। এখানে উভয়ের ব্যাখ্যা এবং ব্যবহারের ক্ষেত্রে পার্থক্য আলোচনা করা হচ্ছে।


Deferred Execution

Deferred Execution হল একটি LINQ কুয়েরি এক্সিকিউট করার কৌশল, যেখানে কুয়েরি তৈরি হওয়ার পর তা তৎক্ষণাৎ এক্সিকিউট হয় না। কুয়েরি এক্সিকিউট হয় শুধুমাত্র যখন আপনি তার উপর কোনো অপারেশন বা ফলাফল নিতে চান। এটি এক্সিকিউশনের সময়ের জন্য অপেক্ষা করে, এবং এই সময়ের মধ্যে কুয়েরি পুনরায় পরিবর্তিত হতে পারে বা পুনরায় চালানো হতে পারে।

Deferred Execution এর সুবিধা:

  • ফ্লেক্সিবিলিটি: কুয়েরি তৈরির পরে আপনি যখনই তা ব্যবহার করবেন, তখন এটি ডেটা ফেচ করবে, এবং কোডের বাস্তবায়ন পরিবর্তিত হতে পারে।
  • মেমরি সাশ্রয়ী: কুয়েরি শুধু তখনই ডেটা ফেচ করবে যখন প্রয়োজন হয়, ফলে অপ্রয়োজনীয় মেমরি ব্যবহৃত হয় না।

Deferred Execution উদাহরণ:

var people = new List<Person>
{
    new Person { Name = "John", Age = 30 },
    new Person { Name = "Jane", Age = 25 },
    new Person { Name = "Paul", Age = 35 }
};

// Deferred Execution
var query = people.Where(p => p.Age > 30); // Query is defined, but not executed yet

// Query executed when iteration starts
foreach (var person in query)
{
    Console.WriteLine(person.Name);
}

এখানে, Where ক্লজ দিয়ে একটি কুয়েরি তৈরি করা হয়েছে, কিন্তু এটি তখনই এক্সিকিউট হবে যখন foreach লুপ চলবে। এর মানে হল যে কুয়েরি যখন রান করবে, তখন কেবলমাত্র Age > 30 শর্ত মেনে ডেটা বের হবে।

Deferred Execution এর আচরণ:

  • কুয়েরি তৈরি হওয়ার সময় কোনো ডেটা ফেরত আসবে না।
  • কেবল তখনই ডেটা ফেরত আসবে যখন আপনি কুয়েরি ইটেরেট করবেন বা এর উপর ফলাফল বের করবেন।
  • এর ফলে কোডের ভিন্ন অংশে কুয়েরি ব্যবহৃত হলে ফলাফল পরিবর্তিত হতে পারে (যদি ডেটা পরিবর্তিত হয়)।

Immediate Execution

Immediate Execution হল একটি LINQ কুয়েরি এক্সিকিউট করার কৌশল যেখানে কুয়েরি তৈরি হওয়ার সঙ্গে সঙ্গে তা তৎক্ষণাৎ এক্সিকিউট হয় এবং ফলাফলকে সরাসরি সংগ্রহ করা হয়। এর মানে, কুয়েরি রান হওয়া থেকে ডেটার সাথে কাজ করার জন্য একটি নির্দিষ্ট ফলাফল (যেমন একটি List বা Array) মেমোরি-তে সংরক্ষিত হবে।

Immediate Execution এর সুবিধা:

  • ফলাফল নির্দিষ্ট: যখন আপনি কুয়েরি রান করেন, তখন আপনি যে ফলাফল আশা করছেন তা সঠিকভাবে পাবেন, এবং এটি একটি নির্দিষ্ট মোমেন্টে এক্সিকিউট হবে।
  • ফলাফল এক্সিকিউট করার পর পরিবর্তন করা যাবে না: কুয়েরির ফলাফল সংগ্রহ হওয়ার পর, আপনি ওই ফলাফলটি পরবর্তীতে আরও ব্যবহার করতে পারবেন।

Immediate Execution উদাহরণ:

var people = new List<Person>
{
    new Person { Name = "John", Age = 30 },
    new Person { Name = "Jane", Age = 25 },
    new Person { Name = "Paul", Age = 35 }
};

// Immediate Execution
var query = people.Where(p => p.Age > 30).ToList(); // Query is executed immediately and result is stored in a list

foreach (var person in query)
{
    Console.WriteLine(person.Name);
}

এখানে, ToList() ব্যবহার করা হয়েছে যা Immediate Execution এর উদাহরণ। কুয়েরি তৈরি হওয়ার সঙ্গে সঙ্গে এটি এক্সিকিউট হবে এবং ফলাফল একটি List-এ সংরক্ষিত হবে। আপনি পরবর্তী সময়ে এই ফলাফলটি ব্যবহার করতে পারবেন, কিন্তু কুয়েরি আবার এক্সিকিউট হবে না।

Immediate Execution এর আচরণ:

  • কুয়েরি এক্সিকিউট হওয়ার সঙ্গে সঙ্গে ফলাফল সংগ্রহ করা হয় এবং মেমোরি-তে রাখে।
  • একবার এক্সিকিউট হলে, কুয়েরি পুনরায় এক্সিকিউট হবে না (যতবার না আপনি পুনরায় কুয়েরি চালাচ্ছেন)।

Deferred Execution বনাম Immediate Execution: পার্থক্য

বৈশিষ্ট্যDeferred ExecutionImmediate Execution
কুয়েরি এক্সিকিউশন সময়কেবল যখন প্রয়োজন, তখন এক্সিকিউট হয়কুয়েরি তৈরি হওয়ার সাথে সাথে এক্সিকিউট হয়
ফলাফল সংগ্রহফলাফল সংগ্রহ করা হয় যখন কুয়েরি চালানো হয়ফলাফল তৎক্ষণাৎ সংগ্রহ করা হয় এবং মেমোরি-তে সংরক্ষিত হয়
মেমোরি ব্যবস্থাপনামেমোরি সাশ্রয়ী, কারণ কেবল যখন প্রয়োজন তখনই ডেটা লোড হয়মেমোরি-তে ডেটা মজুদ থাকে যা অপটিমাইজেশনের জন্য উপযুক্ত নয়
কোড পরিবর্তনডেটা পরিবর্তিত হতে পারে কুয়েরি চালানোর সময়এক্সিকিউট হওয়া শেষে ফলাফল পরিবর্তন করা সম্ভব নয়
ব্যবহারলাইভ ডেটা ব্যবহার করতে যখন ফলাফল আপডেট হতে পারেযখন নির্দিষ্ট সময়ের জন্য স্থির ফলাফল দরকার

কখন Deferred Execution ব্যবহার করবেন?

  • যখন ডেটা বড় এবং প্রক্রিয়াকরণের জন্য কেবলমাত্র প্রয়োজনীয় অংশ চাচ্ছেন।
  • যখন আপনি ডেটা ফলাফলগুলি শর্তের উপর ভিত্তি করে পরিবর্তন করতে চান বা একাধিকবার ব্যবহারের জন্য কুয়েরি পুনরায় প্রয়োগ করতে চান।

কখন Immediate Execution ব্যবহার করবেন?

  • যখন আপনি কুয়েরির ফলাফল একবার সংগ্রহ করতে চান এবং পরবর্তীতে তা পুনরায় পরিবর্তন না করতে চান।
  • যখন ডেটা সংগ্রহ করতে সময়ের মধ্যে পার্থক্য তৈরি করা যাবে না এবং কুয়েরি এক্সিকিউট হওয়া দরকার।

সারাংশ

Deferred Execution এবং Immediate Execution LINQ-এর দুটি গুরুত্বপূর্ণ এক্সিকিউশন মডেল। Deferred Execution ফ্লেক্সিবিলিটি এবং মেমোরি সাশ্রয়ের সুবিধা প্রদান করে, যখন Immediate Execution ডেটাকে এক্সিকিউট করার সাথে সাথেই সংগ্রহ করে, যার ফলে ডেটার স্থির ফলাফল পাওয়া যায়। কুয়েরি তৈরির উদ্দেশ্য এবং ডেটার পরিমাণের উপর ভিত্তি করে আপনাকে সঠিক এক্সিকিউশন মডেলটি বেছে নিতে হবে।

common.content_added_by
টপ রেটেড অ্যাপ

স্যাট অ্যাকাডেমী অ্যাপ

আমাদের অল-ইন-ওয়ান মোবাইল অ্যাপের মাধ্যমে সীমাহীন শেখার সুযোগ উপভোগ করুন।

ভিডিও
লাইভ ক্লাস
এক্সাম
ডাউনলোড করুন
Promotion