在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
反射时,由于编译器要判断权限,身份等操作,所以比直接操作要慢
测试代码: 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倍,所以非特殊需求,项目中就不要用反射吧。。。 |
2023-10-27
2022-08-15
2022-08-17
2022-09-23
2022-08-13
请发表评论