我希望得到一位真正使用C#进行实时编程或真正了解语言内部的人的回复。
我知道异常不应该用于处理正常处理,而只能用于检测错误条件。这个话题已经有很多讨论了。
我想知道仅仅在一个try/catch块中(除非程序必须结束,否则永远不会捕获异常)是否会导致运行时减速。try/catch块位于必须重复调用的函数内部。我怀疑成本只有极小的代价。
这个成本可以用CPU周期、其他任务(与浮点乘法的成本相同)或其他方式来量化吗?
我们使用Microsoft C#.Net 3.5在Windows XP下。
我希望得到一位真正使用C#进行实时编程或真正了解语言内部的人的回复。
我知道异常不应该用于处理正常处理,而只能用于检测错误条件。这个话题已经有很多讨论了。
我想知道仅仅在一个try/catch块中(除非程序必须结束,否则永远不会捕获异常)是否会导致运行时减速。try/catch块位于必须重复调用的函数内部。我怀疑成本只有极小的代价。
这个成本可以用CPU周期、其他任务(与浮点乘法的成本相同)或其他方式来量化吗?
我们使用Microsoft C#.Net 3.5在Windows XP下。
.NET异常的开销非常低,除非它们被抛出。使用try/catch块对性能影响极小,即使在非常快速、紧密的循环中也几乎没有影响。
然而,在.NET中,一旦抛出异常,它们就会变得非常昂贵。与许多其他语言相比,如果您抛出异常,则对性能的影响可能更大。这是由于创建异常时获取的完整堆栈信息等原因。
这与其他一些语言(如Python)的行为相反,其中异常处理具有较高的成本,但抛出异常实际上相当高效。
但是,如果您担心性能问题,建议通过分析来测试您的程序。在进行了相当多的性能分析后,这是我的经验。在您自己的代码库中测量才是最好的方法。