轻量级AOP框架-移植python的装饰器(Decorator)到C#(编码篇)
2010-01-08 00:00:00 来源:WEB开发网测试代码很简单:
1 var instanse = TypeFactory.CreateInstanse<TestClass>();
2 Console.WriteLine(instanse.Test());
运行结果如下图所示:
执行得到和Python代码完全一致的结果,至此,框架的功能实现完毕。
接下来用CodeTimer对框架的性能做个简单的测试,分别对比无代理方法,动态代理方法,手动继承方法的执行效率进行测试,测试代码如下:
01 var instanse = TypeFactory.CreateInstanse<TestClass>();
02 TestClass rawInstanse = new TestClass();
03 TestClassStatic staticInstanse = new TestClassStatic();
04
05 //first call
06 rawInstanse.Test2();
07 instanse.Test2();
08 staticInstanse.Test2();
09
10 CodeTimer.Initialize();
11 int num = 10000;
12 CodeTimer.Time("Raw Type", num, () => {
13 rawInstanse.Test2();
14 });
15 CodeTimer.Time("Proxy Type", num, () => {
16 instanse.Test2();
17 });
18 CodeTimer.Time("Static Type", num, () => {
19 staticInstanse.Test2();
20 });
看到结果很是让人始料不及,代理方法和手写方法执行速度一致倒是在预料之中,毕竟IL是完全一样的,但是有Decorator和无Decorator的效率差距实在无法让人接受,很显然,我们代理方法的实现效率上无法过关,因此,本框架虽然功能上已经达到要求,但是性能上还有很大的优化空间。
六. 本篇小结
在本篇中,我们完成了框架的基本设计,让框架成功的实现了我们的功能目标,但是,通过测试表明,框架的性能还远不能达到我们的要求,因此,在下一篇中(暂定名:优化篇),我们将详细分析框架的性能瓶颈并进行优化,使得本框架达到简单高效的结果。
本文示例源代码或素材下载
- ››AOP的两个应用:实体集更新(DateEntityListUpdate...
- ››AOP的两个应用:实体集更新(DateEntityListUpdate...
- ››轻量级数据交换格式 JSON轻松入门
- ››轻量级系统 Lubuntu 10.04 发布
- ››AOP 的利器:ASM 3.0 介绍
- ››轻量级AOP框架-移植python的装饰器(Decorator)到C...
- ››轻量级AOP框架-移植python的装饰器(Decorator)到C...
- ››轻量级开发的成功秘诀,第 4 部分: 轻量级容器的比...
- ››轻量级开发的成功秘诀,第 5 部分: 在保守公司进行...
- ››轻量级开发的成功秘诀,第 6 部分: 持久性策略
- ››轻量级开发的成功秘诀,第 7 部分: Java 替代方案...
- ››轻量级开发的成功秘诀,第 8 部分: Seaside
更多精彩
赞助商链接