异常的开销

原创 2012年03月28日 23:53:28
//z 2012-3-29 0:01:36 IS2120@CSDN
异常的开销:
1. static cost
:managed exceptions相对代价较低(与c++相比)。
static cost所发生的地方:
1.1.try/finally/catch/throw这些代码构件实际所在的位置;
1.2. unmanaged code中一旦有了这些构件(使用异常),代码要做大量隐式的工作(比如记录下所有对象,以在异常发生时进行析构),有大量隐式清理工作需要去做。即便异常不发生,代码实际也要承受这些工作(记录以用以清理)
//z 2012-3-29 0:01:36 IS2120@CSDN
2. managed world
在托管的世界里,就没有这些广泛的显著的确定的对象的析构。这意味着异常的static cost会低一些。创建一个新的object并不会强制更新exception的状态。这样异常的代价就只限于使用异常本身,而不用为处理清理工作做大量的薄记了。

3. 当实际抛出一个异常的时候,代价叫非托管代码高一些。他们使用了同样的机制,托管代码是在非托管的基础上实现的。
在托管代码中,对于异常实现了更多的特性:比如说可以显示完整的调用堆栈。
这些新特性将带来空间和时间的开销;同时他们带来的调试和更正异常的便利性;即便如此,也得注意抛出一个异常代价不便宜。
//z 2012-3-29 0:01:36 IS2120@CSDN
版权声明:BG57IV3,未经允许不得转载。

相关文章推荐

More Effective C++----(15)了解异常处理的系统开销

Item M15:了解异常处理的系统开销 为了在运行时处理异常,程序要记录大量的信息: 无论执行到什么地方,程序都必须能够识别出如果在此处抛出异常的话,将要被释放哪一个对象;程序必须知道每一个...

转 C++异常机制的实现方式和开销分析 白杨 http://baiy.cn

C++异常机制的实现方式和开销分析白杨http://baiy.cn 在我几年前开始写《C++编码规范与指导》一文时,就已经规划着要加入这样一篇讨论 C++ 异常机制的文章了。没想到时隔几年以后才有机会...

C++异常机制的实现方式和开销分析

在我几年前开始写《C++编码规范与指导》一文时,就已经规划着要加入这样一篇讨论 C++ 异常机制的文章了。没想到时隔几年以后才有机会把这个尾巴补完 :-)。还是那句开场白:“在恰当的场合使用恰当的特性...

选择线程数目时谨慎考虑线程切换开销

合理设计并发的缓冲池大小才能有效提升系统性能

个人开销管理系统

  • 2012年06月19日 19:22
  • 250KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:异常的开销
举报原因:
原因补充:

(最多只允许输入30个字)