继承Object和ContextBoundObject处理效率上的差距

       ContextBoundObject一个很熟悉的对象,它提供对象有处理上下文的能力;通过它能够方便地实现AOP处理机制。它带来好处的同时也会带来效率上的损失,到底继承ContextBoundObject后会在效率上损失多少呢?下面用简单的代码测试一下;测试方法很简单就是建立两个具有相同方法的对象,一个继承于ContextBoundObject一个没有;然后分别循环次数地执行对象的创建和方法调用(以下测试代码并不能完全反映所有应用情况)。

测试代码

                System.Diagnostics.Stopwatch stop = new System.Diagnostics.Stopwatch();

                stop.Reset();

                stop.Start();

                for (int i = 0; i < 10000; i++)

                {

                    Class1 cl1 = new Class1();

                    cl1.Add();

                }

                stop.Stop();

                Console.WriteLine(stop.ElapsedTicks);

 

                stop.Reset();

                stop.Start();

                for (int i = 0; i < 10000; i++)

                {

                    Class2 cl2 = new Class2();

                    cl2.Add();

                }

                stop.Stop();

                Console.WriteLine(stop.ElapsedTicks);

类定义代码

    public class Class1

    {

        public void Add()

        {

        }

    }

    public class Class2 : ContextBoundObject

    {

        public void Add()

        {

        }

    }

测试结果

Class1处理花的时间:22555(1/100毫微秒)

Class2处理花的时间:4747008(1/100毫微秒)

 

从测试结构可以看到,继承ContextBoundObject在处理效率上损失还是很利害的。但实际开发过程可以根据情况使用(开发方便性和执行效率总是很难取得平衡)。ContextBoundObject得到的方便性类似于反射的机制,但滥用同样有可能导致严重的后果。

posted on 2006-11-07 12:13  henry  阅读(4529)  评论(9编辑  收藏  举报

导航