继承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得到的方便性类似于反射的机制,但滥用同样有可能导致严重的后果。

继承Object和ContextBoundObject处理效率上的差距的更多相关文章

  1. js 继承,Object.setPrototypeOf | Object.getPrototypeOf | Object.create class

    https://juejin.im/post/5cfd9d30f265da1b94213d28#heading-14 https://juejin.im/post/5d124a12f265da1b91 ...

  2. Java类是如何默认继承Object的

    前言 学过Java的人都知道,Object是所有类的父类.但是你有没有这样的疑问,我并没有写extends Object,它是怎么默认继承Object的呢? 那么今天我们就来看看像Java这种依赖于虚 ...

  3. Java类是如何默认继承Object的?

    原:https://juejin.im/post/5ca1e8ade51d454e6a300048 前言 学过Java的人都知道,Object是所有类的父类.但是你有没有这样的疑问,我并没有写exte ...

  4. Python2.7版本:定义类时为什么要继承object类?

    ********此答案摘自知乎,且经过自己实际运行后得出******** 继承 object 类的是新式类,不继承 object 类的是经典类 例子: 新式类: 经典类: B.C 是 A 的子类,D ...

  5. java中的继承Object

    一个类,要么是直接继承Object,要么就是间接继承Object,如下: class A{ } class B extends A{ } B 是A的子类,A是Object的子类,所以B间接继承了Obj ...

  6. 【Python深入】Python中继承object和不继承object的区别

    python中定义class的时候,有object和没有object的不同?例如: class Solution(object): class Solution(): 这俩的区别在于—————— 在p ...

  7. Python中新式类 经典类的区别(即类是否继承object)

    首先什么是新式类 经典类呢: #新式类是指继承object的类 class A(obect): ........... #经典类是指没有继承object的类 class A: ........... ...

  8. python声明类时继承不继承object类的区别

    不加的叫做经典类或旧式类,但是现在python3的类都默认是继承了object的,所以可写可不写 下面举个例子说明: 首先说明下__class__功能与用法: __class__功能和type()函数 ...

  9. java 中的interface是否继承object

    首先我们从C++说起, c++可以多继承.也就是一个类型 --- class,可以继承自2个以上的父类型.多继承导致一个问题,很多人知道.例如,如果类型B,类型C均继承自类型A.然后类型D继承自类型B ...

随机推荐

  1. Qt编译慢吗?

    1. “用Qt写的程序编译比MFC慢”的说法是错误的绝对错误,单位代码行数编译Qt远比MFC快得多,因为Qt库的头文件设计非常好,尽量都使用了前置声明,避免了头文件嵌套,几乎所有类都使用了公有类和私有 ...

  2. baike并行计算概念

    并行计算 概论 ▪ 高性能计算 ▪ 计算机集群 ▪ 分布式计算 ▪ 网格计算 ▪ 云端运算         方式 ▪ Bit-level parallelism ▪ Instruction level ...

  3. javascript 典型闭包的用法

    <body><input type="radio" id="radio1" name="readionGroup" /&g ...

  4. MSSQL的编译和执行过程

    原文地址:http://www.cncms.com.cn/mssql/3350_11.htm

  5. 二分-poj-3685-Matrix

    题目链接: http://poj.org/problem?id=3685 题目大意: 有n*n的矩阵,第i行第j列的数为Aij= i2 + 100000 × i + j2 - 100000 × j + ...

  6. event.keyCode列表

    Keycode对照表 字母和数字键的键码值(keyCode) 按键 键码 按键 键码 按键 键码 按键 键码 A 65 J 74 S 83 1 49 B 66 K 75 T 84 2 50 C 67 ...

  7. 第35讲 Activity入门和跳转

    第35讲Activity入门和跳转 1.Activity Activity是用户接口程序.在Android当中,Activity提供可视化的用户界面,一个Android应用通常由多个activity组 ...

  8. Android 应用间的集成

    第一次在手机上安装wsm tools时发现wsm只是个简单的集成框架,需要用其中的工具还需要单独安装,而安装一个工具以后发现图标没有显示,感觉很神奇,最近工作需要,也要做android应用间的集成,研 ...

  9. Mysql 时间操作

    Mysql 时间操作(当天,昨天,7天,30天,半年,全年,季度) 1 . 查看当天日期 select current_date(); 2. 查看当天时间 select current_time(); ...

  10. java bootstrap分页

    样式如下 datumMap.total总共多少页 datumMap.page第几页 <nav class="pull-right"> <ul class=&quo ...