WEB开发网
开发学院软件开发Python 轻量级AOP框架-移植python的装饰器(Decorator)到C... 阅读

轻量级AOP框架-移植python的装饰器(Decorator)到C#(编码篇)

 2010-01-08 00:00:00 来源:WEB开发网   
核心提示: 测试代码很简单:1varinstanse=TypeFactory.CreateInstanse<TestClass>();2Console.WriteLine(instanse.Test());运行结果如下图所示:执行得到和Python代码完全一致的结果,至此,轻量级AOP框架-移植

测试代码很简单:

1 var instanse = TypeFactory.CreateInstanse<TestClass>();
2 Console.WriteLine(instanse.Test());

运行结果如下图所示:

轻量级AOP框架-移植python的装饰器(Decorator)到C#(编码篇)

执行得到和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 });

轻量级AOP框架-移植python的装饰器(Decorator)到C#(编码篇)

看到结果很是让人始料不及,代理方法和手写方法执行速度一致倒是在预料之中,毕竟IL是完全一样的,但是有Decorator和无Decorator的效率差距实在无法让人接受,很显然,我们代理方法的实现效率上无法过关,因此,本框架虽然功能上已经达到要求,但是性能上还有很大的优化空间。

六. 本篇小结

在本篇中,我们完成了框架的基本设计,让框架成功的实现了我们的功能目标,但是,通过测试表明,框架的性能还远不能达到我们的要求,因此,在下一篇中(暂定名:优化篇),我们将详细分析框架的性能瓶颈并进行优化,使得本框架达到简单高效的结果。

本文示例源代码或素材下载

上一页  1 2 3 4 5 6 

Tags:轻量级 AOP 框架

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接