当前位置:首页 > Windows程序 > 正文

C#,反射和直接调用的效率差别

2021-03-28 Windows程序

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

测试代码:

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倍,所以非特殊需求,,项目中就不要用反射吧。。。

温馨提示: 本文由Jm博客推荐,转载请保留链接: https://www.jmwww.net/file/69339.html