在.NET(C#)使用Try...Catch...会影响效率吗?测试一下(2)
测试结果如下表所示
组次 |
没有使用Try…Catch…的时间(毫秒) |
使用Try…Catch…但不出现异常所用的时间(毫秒) |
使用Try…Catch…出现异常所用的时间(毫秒) |
1 |
6 |
3 |
4 |
2 |
11 |
5 |
6 |
3 |
4 |
3 |
6 |
4 |
8 |
10 |
4 |
5 |
6 |
3 |
6 |
6 |
8 |
6 |
4 |
7 |
9 |
5 |
9 |
8 |
5 |
5 |
5 |
9 |
7 |
6 |
10 |
10 |
5 |
4 |
8 |
平均时间 |
6.9 |
5 |
6.2 |
通过观察测试结果,意料之中又参杂着些意外。
意外的是,使用try。。。catch不出现异常跟使用try。。。catch。。。出现异常的平均执行时间比没有使用try。。。catch。。。的平均执行时间要短。这不禁让我想起了很久之前发生的一幕类似的场景:
我一直以为操作SQLServer时使用事务会比没有使用事务要慢很多,可是经过测试,使用事务比没有使用事务要快很多,而且居然不是一个数量级的。因此,使用事务就成为了提升数据库访问性能的一种手段了。
结论:
- 不论是使用c#进行什么开发,使用try。。。catch都不会影响性能,反倒会略微提升性能。
- try。。。catch不仅要在开发中使用,而且在进行公共类的公共方法时必须使用,否则出现了异常,就会影响共同调用此方法的所有用户。
- 如果为了所谓的性能,而不去处理程序中的异常的话,原则上就不能通过(讲原则)。
我使用Vs2008+sp1开发环境简单做了个Demo,有兴趣的朋友可以下载代码自己测试一下。
Try...Catch性能测试代码
作者:深山老林
出处:http://wlb.cnblogs.com/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。