设计之美——反射加速

  上一篇写了关于反射的一些速度测试,里面涉及到克隆建立和委托执行的效率,但是有评论表示說,完全偏离了反射的主题,“动态实例和动态调用”,其实不然,我所要说明的其实并不是說如何创建一个动态委托,并且重复执行,我所要表达的是,拥有一条优雅的路线达到我所希望的要求。

   在上一篇中你可以看到这么一种情况,如果使用模板克隆,效率的提高还是相当明显的,这个大家都能找到办法解决,反射对象缓存已经用的相当普遍了,我一直这么觉得,不过在网上看到一句 emit 能加速反射,不知道哪位兄弟有这方面资料提供下链接, 这里不谈那个空间,如果是IL级别的我相信完全可以做到,亦如动态生成代码,然后单次编译也不是什么难事,都能达到需要的目的,但是这里说明的是如何通过有效的委托来达到目的。

  我这里提供的流程其实很简单,使用一块地方存放反射好的对象进行缓存,这个和别的没什么区别,但是重要的是储存之前, 储存之前通过反射动态建立关于对象的委托链,然后保存。

  然后程序使用一个入口比如InvokeMember(string name,object[] args) 这样的一个公开入口查找相应的委托并执行,但是记住,不是动态执行,是直接执行!这样就能达到我所需要的目标和要求。而这一切对类对象的要求只有一个,继承有效的基类,然后通过新建的委托函数调用

   代码写了一些,也算50%以上了,不过今天状态不是太好,没有完成就不贴出来了,具体的测试结果也许下一篇你就能看到,我相信在这样的模式下,绝对能换来让人满意的效率。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值