Object Binder
Object Binder mekanizmasını test ederken karşılaştırma yapacağımız yöntem reflection mekanizması olacak. Arka arkaya hem dinamik hem de reflection kodlarını işleteceğiz ve her bir kodun işletilmesi ne kadar sürüyor bunu gözlemleyeceğiz. Test için öncelikle basit bir Foo sınıfı tasarlayacağız ve içerisine bir property bir de bu propertyi ekrana yazan bir metot ekleyeceğiz. Daha sonra ise bu propertyi hem dinamik hem de reflection ile değiştirip sonra yine bu iki farklı mekanizma ile metot çağrımını gerçekleştireceğiz. Kodlar ise şu şekilde olacak. class Foo { public string MyProperty { get; set; } public void Print() { HttpContext.Current.Response.Write("<br/>MyProperty = " + MyProperty); } } Daha sonra ise Test metotlarını yazıyoruz.protected void TestwithReflection()
{
object obj = new Foo();
Stopwatch watch = new Stopwatch();
for (int i = 1; i < 11; i++)
{
watch.Restart();
obj.GetType().GetProperty("MyProperty").SetValue(obj, string.Format("Test with Reflection -{0}", i), null);
obj.GetType().GetMethod("Print").Invoke(obj, null);
watch.Stop();
Response.Write(" Elapsed Time :<strong>" + watch.Elapsed.TotalMilliseconds + "</strong>");
}
}
protected void TestwithDLR()
{
dynamic obj = new Foo();
Stopwatch watch = new Stopwatch();
for (int i = 1; i < 11; i++)
{
watch.Restart();
obj.MyProperty = string.Format("Test with DLR -{0}", i);
obj.Print();
watch.Stop();
Response.Write(" Elapsed Time :<strong>" + watch.Elapsed.TotalMilliseconds + "</strong>");
}
}
Uygulamamızı çalıştırdığımızda ise aşağıdaki gibi bir sonuçla karşılaşıyoruz.

Javascript Binder
Test yapacağımız bir diğer platform ise Silverlight olacak. Bu sefer kodlarımızı hem javascript hem de dinamik olarak C# tarafında yazacağız ve işletim sürelerini inceleyeceğiz. Çalıştıracağımız kodda yine basit olarak result isimli div elementi içerisine 100 kere string değerler ekleyeceğiz. Kodlar ise şu şekilde olacak Javascript Kodları :function Test()
{
for (var i = 0; i < 100; i++)
{
document.getElementById("result").innerHTML += "<br/>Call Test from javascript";
}
}
Daha sonra bu kodu C# tarafından hem dinamik olarak hem de window.Invoke yardımcı metoduyla çağırıyoruz.
Çıkan sonuçlar ise şu şekilde


