我希望那些真正使用C#进行实时编程的人或者真正理解该语言内部原理的人能给我回复。
我知道异常不应该用来处理正常的处理,而只能用来检测错误条件。关于这个话题有很多讨论。
我想知道简单地使用try/catch块是否会降低运行时的速度(它永远不会捕获异常,除非程序无论如何都要结束)。try/catch块位于必须重复调用的函数中。我怀疑这样做的成本很低。
成本是否可以根据CPU周期或其他任务(与浮点乘法相同的成本)或其他方式进行量化?
我们使用的是windows XP下的微软C#.Net 3.5。
发布于 2009-08-28 15:49:38
除非抛出异常,否则.NET异常的开销非常非常低。将try/catch块放在适当的位置将对性能的影响非常小。我发现,即使在非常快、很紧的循环中,也几乎没有对异常处理的影响。
然而,当抛出异常时,.NET中的异常是非常昂贵的。如果你抛出它们,它们往往比许多其他语言对性能的影响要大得多。这是由于创建异常时收集的完整堆栈信息造成的,等等。
这与其他一些语言的行为相反,比如python,在这些语言中,异常处理的成本较高,但抛出的性能实际上相当高。
但是,如果你担心,我建议你概述你的程序,并自己测试它。这是我在进行了相当多的性能分析之后的经验。在您自己的代码库中测量是不可替代的。
发布于 2009-08-28 15:57:30
在这里对try catch的性能影响进行了很好的讨论。
Do try/catch blocks hurt performance when exceptions are not thrown?
https://stackoverflow.com/questions/1347848
复制相似问题