In my previous article, the continuous promotion. NET4.0 new features. Especially. NET4.0 Dynamic is a new feature. The ensuing problems have also arisen-dynamic.
We do not only need to develop the code concise, can hope that they can write a good structure. It is also very important that we write out the code efficiently. Put aside the implementation principle of dynamic in. net4.0. This article only considers the efficiency of dynamic rather than the use of reflection in the end is fast or slow? Don't. NET to introduce dynamic this new thing reduces our program efficiency? Some netizens point out that commenting on the efficiency of a feature or method, the only criterion is measured.
To get to the point, follow the code below to end your doubts about dynamic efficiency!!!
1, New test class:
public class TestClass
{
public string TestProperty {get; set;}
}
2, the console program to test the efficiency of the Code:
static void Main (string] args)
{
int times = 1000000;
String value = "Dynamic VS Reflection";
Reflection Test begins
TestClass testtypebyreflection = new TestClass ();
Stopwatch Watch1 = Stopwatch.startnew ();
var property = typeof (TestClass). GetProperty ("TestProperty");
for (var i = 0; I < times; i++)
{
Property. SetValue (testtypebyreflection, value, NULL);
}
Console.WriteLine (String. Format ("Reflection time consuming: {0} milliseconds", Watch1.) Elapsedmilliseconds));
Dynamic test Start
Stopwatch WATCH2 = Stopwatch.startnew ();
Dynamic testtypebydynamic = new TestClass ();
for (int i = 0; I < times; i++)
{
Testtypebydynamic.testproperty = value;
}
Console.WriteLine (String. Format ("Dynamic time consuming: {0} milliseconds", Watch2.) Elapsedmilliseconds));
Console.ReadLine ();
}
3, Test TestClass class, start dynamic VS reflection test results are as follows
How, dynamic is faster than reflection?!
Finally hope this article can bring you help, if there are deficiencies are welcome to point out, thank you!