

















看了提高一下dotnet程序的效率一中关于exception的部分和相关的评论,我觉得有些知识点可能大家平时没有注意到或没有深入的了解:
千里之堤,以蝼蚁之穴溃;百尺之室,以突隙之烟焚.
I/O,Data Access,这些看似在性能上存在bottleneck的东西其实是源于我们思维的定式:你的操作系统和文件系统难道真的发挥硬盘的I/O水平了吗?你的一定要把数据放在一个叫做数据库的东西里面吗?
了解原理和内部实现, the more the better.
2008-07-07 06:25 by Angel Lucifer
谈下俺的看法。
添加 try...catch 块确实会增加额外的开销,这本身就是由 SEH 决定的。
但是在没有异常抛出的时候,这个额外开销并不大。怕的是 try...catch 块嵌套,尤其是无意识的嵌套。这种累积性的额外开销可能会增长到影响程序性能的地步。此外,不能被编译器优化的是 try...catch 块,而不是其内部编码。
另外就是频繁的抛出异常是性能杀手,因为一旦抛出异常,在辗转展开堆栈,查找异常位置的时候,非常耗费时间。
既然说到这了,顺便再说下关于异常与性能的话题。《.NET 设计规范》里有提及,MSDN 也有那篇文章的内容。它提出了两个模式 Tester-Doer 和 Try-Parse 。
对于库开发人员来说,根本不用在乎上述问题,有问题就抛异常。当然有时候还要考虑下 Try-Parse 模式。真正麻烦的是客户应用开发人员,也就是使用库的开发人员。
还有就是绝大部分异常在产品测试的时候都会得到妥善处理。
Over...
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。