"ইনলাইন ফাংশন" দ্বারা আপনি কী বোঝাতে চান তার উপর নির্ভর করে আপনার প্রশ্নের উত্তর হ্যাঁ এবং না। আপনি যদি এই শব্দটি সি ++ বিকাশের মতো ব্যবহার করেন তবে উত্তরটি হ'ল না, আপনি এটি করতে পারবেন না - এমনকি ল্যাম্বডা এক্সপ্রেশনটি একটি ফাংশন কল। যদিও এটি সত্য যে আপনি সি # তে ফাংশন ঘোষণাগুলি প্রতিস্থাপন করতে ইনলাইন ল্যাম্বডা এক্সপ্রেশনগুলি সংজ্ঞায়িত করতে পারেন, সংকলকটি এখনও একটি বেনামী ফাংশন তৈরি করে শেষ করে।
এটি পরীক্ষা করার জন্য আমি এখানে ব্যবহার করেছি এমন কিছু সাধারণ কোড (VS2015):
static void Main(string[] args)
{
Func<int, int> incr = a => a + 1;
Console.WriteLine($"P1 = {incr(5)}");
}
সংকলকটি কী উত্পন্ন করে? আমি আইএলএসপিএস নামে একটি নিফটি সরঞ্জাম ব্যবহার করেছি যা প্রকৃত আইএল সমাবেশ উত্পন্ন দেখায়। একবার দেখুন (আমি অনেকগুলি ক্লাস সেটআপ স্টাফ বাদ দিয়েছি)
এটি প্রধান কাজ:
IL_001f: stloc.0
IL_0020: ldstr "P1 = {0}"
IL_0025: ldloc.0
IL_0026: ldc.i4.5
IL_0027: callvirt instance !1 class [mscorlib]System.Func`2<int32, int32>::Invoke(!0)
IL_002c: box [mscorlib]System.Int32
IL_0031: call string [mscorlib]System.String::Format(string, object)
IL_0036: call void [mscorlib]System.Console::WriteLine(string)
IL_003b: ret
এই লাইনগুলি IL_0026 এবং IL_0027 দেখুন? এই দুটি নির্দেশাবলী 5 নম্বর লোড এবং একটি ফাংশন কল। তারপরে IL_0031 এবং IL_0036 ফর্ম্যাট করুন এবং ফলাফলটি মুদ্রণ করুন।
এবং এখানে ফাংশন বলা হয়:
.method assembly hidebysig
instance int32 '<Main>b__0_0' (
int32 a
) cil managed
{
.maxstack 8
IL_0000: ldarg.1
IL_0001: ldc.i4.1
IL_0002: add
IL_0003: ret
}
এটি সত্যিই একটি সংক্ষিপ্ত ফাংশন, তবে এটি একটি ফাংশন।
এটি কি অপ্টিমাইজ করার কোনও প্রচেষ্টা মূল্য? নাহ। হতে পারে আপনি যদি এটি কয়েক সেকেন্ডে কয়েকবার কল করে থাকেন তবে যদি পারফরম্যান্সটি গুরুত্বপূর্ণ হয় তবে কাজটি করার জন্য আপনার সি / সি ++ তে লিখিত নেটিভ কোডটি কল করা বিবেচনা করা উচিত।
আমার অভিজ্ঞতায় পাঠযোগ্যতা এবং রক্ষণাবেক্ষণযোগ্যতা গতিতে কয়েকটি মাইক্রোসেকেন্ডের লাভের জন্য অনুকূলিতকরণের চেয়ে প্রায় সবসময় গুরুত্বপূর্ণ। আপনার কোডটি পঠনযোগ্য এবং ভেরিয়েবল স্কোপিং নিয়ন্ত্রণ করতে এবং কার্য সম্পাদন সম্পর্কে চিন্তা করবেন না বলে ফাংশন ব্যবহার করুন।
"অকালীন অপটিমাইজেশন হ'ল প্রোগ্রামিংয়ে সমস্ত মন্দ (বা এর বেশিরভাগ অংশে) এর মূলে" " - ডোনাল্ড নুথ
"এমন একটি প্রোগ্রাম যা সঠিকভাবে চালিত হয় না তার দ্রুত চালানোর প্রয়োজন হয় না" - মি