关于反射的性能优化问题 在项目开发过程中有用反射获的程序集类型来创建该类型的新实例,但是通过性能测试后发现用这种方法来实现的功能模块耗时很严重,不用反射来做的话实现起来比较麻烦,请各位高手们指点下,有什么方法可以对反射进行性能优化~~ 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 C#主要支持 5 种动态创建对象的方式: 1. Type.InvokeMember 2. ContructorInfo.Invoke 3. Activator.CreateInstance(Type) 4. Activator.CreateInstance(assemblyName, typeName) 5. Assembly.CreateInstance(typeName) 最快的是方式 3 ,与 Direct Create 的差异在一个数量级之内,约慢 7 倍的水平。其他方式,至少在 40 倍以上,最慢的是方式 4 ,要慢三个数量级。 可以 但是不完全把, 如果 loadFile 的时候, 就不能 单一用 activeator了吧, 用static将反射创建的实例缓存起来,不缓存当然效率低了。private static readonly IAdmin dal = DataAccess.CreateInstance<IAdmin>("AdminDal"); 现在用的就是第3种方式来实例化对象的,会不会是因为被反射出来是一个Control对象,而且这个对象需要加载的子控件比较多,加上Load事件和show事件里执行的代码也挺多的~ 这个有做的,我是对C#自带的反射进行了封装,有对创建的实例用static进行缓存~ http://www.cnblogs.com/slyzly/articles/2657937.html看看这个能不能解决,反射一般是要加上缓存的。 打个比方说,我通过反射创建了对象实例A,A是一个control或者form,A里面又包含了子控件A1,A2,A3,在实例化A的时候肯定也要把A1,A2,A3加载完的,这样子一来耗时就很是厉害啊~我用dottrace测试了下,整个反射过程消耗的时间占了大概70%~~ c1FlexGrid如何实现列的别名(紧急求助,分不够再加) 无法为本地连接使用用户凭证 [winforms]: 处理从扫描仪扫描进来的图片 论应用程序数据读取的效率问题 FTP连接后,无法列目录问题,谢谢大家,谁帮忙解决一下!着急呀! 关于C#建模Rational Xde东东的问题 datagrid 请教一个关于.net DrawString 画图问题 怎样在网页中嵌入WinForm(windows窗体)(求救!!!) 请教一个简单问题 帮忙看下这段代码检测打印机缺纸信息的 获得数组交集数
1. Type.InvokeMember
2. ContructorInfo.Invoke
3. Activator.CreateInstance(Type)
4. Activator.CreateInstance(assemblyName, typeName)
5. Assembly.CreateInstance(typeName)
最快的是方式 3 ,与 Direct Create 的差异在一个数量级之内,约慢 7 倍的水平。其他方式,至少在 40 倍以上,最慢的是方式 4 ,要慢三个数量级。
private static readonly IAdmin dal = DataAccess.CreateInstance<IAdmin>("AdminDal");