গতি তুলনা গুরুত্বপূর্ণ অংশ হিসাবে 2 পদ্ধতির একটি দ্রুত পুনরুদ্ধার।
http://geekswithblogs.net/BlackRabbitCoder/archive/2013/07/25/c.net-little-wonders-getting-caller-information.aspx
সংকলন-সময়ে কলার নির্ধারণ করা
static void Log(object message,
[CallerMemberName] string memberName = "",
[CallerFilePath] string fileName = "",
[CallerLineNumber] int lineNumber = 0)
{
// we'll just use a simple Console write for now
Console.WriteLine("{0}({1}):{2} - {3}", fileName, lineNumber, memberName, message);
}
স্ট্যাকটি ব্যবহার করে কলার নির্ধারণ করা
static void Log(object message)
{
// frame 1, true for source info
StackFrame frame = new StackFrame(1, true);
var method = frame.GetMethod();
var fileName = frame.GetFileName();
var lineNumber = frame.GetFileLineNumber();
// we'll just use a simple Console write for now
Console.WriteLine("{0}({1}):{2} - {3}", fileName, lineNumber, method.Name, message);
}
2 পদ্ধতির তুলনা
Time for 1,000,000 iterations with Attributes: 196 ms
Time for 1,000,000 iterations with StackTrace: 5096 ms
সুতরাং আপনি দেখুন, গুণাবলী ব্যবহার করে অনেক অনেক দ্রুত! বাস্তবে প্রায় 25x দ্রুত।