zoukankan      html  css  js  c++  java
  • C#,反射和直接调用的效率差别

    反射时,由于编译器要判断权限,身份等操作,所以比直接操作要慢

    测试代码:

                const int NUM = 1000000;
    
                Stopwatch sw = new Stopwatch();
                sw.Start();
    
                for (int i = 0; i < NUM; i++)
                {
                    ReflectTest rt = new ReflectTest();
                    rt.CountSomething();
                }
    
                sw.Stop();
                Console.WriteLine(sw.ElapsedTicks);
    
    
                sw.Reset();
                sw.Start();
                for (int i = 0; i < NUM; i++)
                {
                    Assembly assembly = Assembly.GetExecutingAssembly();
                    Type t = assembly.GetType("ConsoleApplication1.ReflectTest");
                    ConstructorInfo constructorInfo = t.GetConstructors().OrderBy(c => c.GetParameters().Length).FirstOrDefault();
                    object obj = constructorInfo.Invoke(new object[constructorInfo.GetParameters().Length]);
                    //object obj = Activator.CreateInstance(t);
                    MethodInfo methodInfo = t.GetMethod("CountSomething");
                    methodInfo.Invoke(obj,new object[methodInfo.GetParameters().Length]);
                }
                sw.Stop();
                Console.WriteLine(sw.ElapsedTicks);
    
    
    
                Console.ReadKey();

    结果:

    反射用时是直接调用的2到3倍,所以非特殊需求,项目中就不要用反射吧。。。

  • 相关阅读:
    Rabbitmq整合SpringBoot
    linux下转pdf乱码
    invalid authentication data connection reset
    谷粒商城异步编排(三十一)
    KSA运行
    安装k8s缺少模块
    ansible安装
    Rabbitmq常见的模式
    Rabbitmq入门
    谷粒商城检索服务(三十)
  • 原文地址:https://www.cnblogs.com/LouisGuo/p/4673807.html
Copyright © 2011-2022 走看看