zoukankan      html  css  js  c++  java
  • 一起谈.NET技术,.NET4.0 之 Dynamic VS Reflection 效率 狼人:

      在我先前的文章中,不断的推广.NET4.0新特性。特别是.NET4.0 Dynamic 这个新特性。随之而来的问题也出现了—Dynamic 执行效率如何?

      我们做开发的不光需要代码简洁,能够希望自己能够写出好的架构。还有一点非常重要的就是,我们的写出来的代码效率。撇开Dynamic在.net4.0中的实现原理。本篇只考虑dynamic 的效率比起使用反射到底是快还是慢?难道.NET为引入了dynamic这个新鲜事物降低了我们的程序效率?有网友指出评论一个特性或者方法的效率如何,唯一的判定标准就是实测

    切入主题,按照以下代码,来结束你对dynamic的效率怀疑吧!!!

      1、新建测试类:

    public class TestClass
    {
    public string TestProperty { get; set; }
    }

      2、控制台程序进行效率测试代码:

    static void Main(string[] args)
    {
    int times = 1000000;

    string value = "Dynamic VS Reflection";

    //reflection 测试开始
    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耗时:{0} 毫秒", watch1.ElapsedMilliseconds));


    //dynamic 测试开始
    Stopwatch watch2 = Stopwatch.StartNew();
    dynamic testTypeByDynamic
    = new TestClass();
    for (int i = 0; i < times; i++)
    {
    testTypeByDynamic.TestProperty
    = value;
    }
    Console.WriteLine(
    string.Format("Dynamic耗时:{0} 毫秒", watch2.ElapsedMilliseconds));

    Console.ReadLine();
    }

      3、测试TestClass类,开始 dynamic VS reflection 测试结果如下

      怎样,dynamic 比起reflection 够快吧?!

      最后希望本篇文章可以给您带来帮助,如有不足之处欢迎指出,谢谢!

  • 相关阅读:
    防火墙透明模式
    HP管理工具System Management Homepage安装配置
    kbmmw 中JSON 中使用SQL 查询
    kbmmw 中JSON 操作入门
    第一个kbmmw for Linux 服务器
    kbmmw 5.02发布
    kbmmw 5.01 发布
    使用delphi 10.2 开发linux 上的Daemon
    使用unidac 在linux 上无驱动直接访问MS SQL SERVER
    使用delphi 10.2 开发linux 上的webservice
  • 原文地址:https://www.cnblogs.com/waw/p/2163090.html
Copyright © 2011-2022 走看看