C#实时尝试捕获

Mar*_*k T 7 c# real-time try-catch throw

我想要一个实际上在C#中进行实时编程或者真正了解语言内部的人的回复.

我知道异常不应该用于处理正常处理,而只是用于检测错误条件.有关该主题的讨论很多.

我想知道是否有任何运行时间减慢,只需要一个try/catch块(除非程序必须以任何方式结束,否则永远不会捕获异常).try/catch块位于必须重复调用的函数内.我怀疑只有最低成本.

是否可以根据CPU周期或其他任务(与浮点乘法相同的成本)或其他方式来量化成本?

我们在Windows XP下使用Microsoft C#.Net 3.5.

Ree*_*sey 11

除非抛出异常,否则.NET异常的开销成本非常低.使用try/catch块对性能影响非常小.我发现几乎没有任何影响,即使在非常快速,紧密的循环中,也有异常处理.

但是,当它们被抛出时,.NET中的异常非常昂贵.如果抛出它们,它们往往会对性能产生很大的影响.这是由于在创建异常时收集的完整堆栈信息等.

这与其他语言相反,例如python,其中异常处理的成本较高,但抛出实际上是相当高效的.

但是,如果您担心,我建议您描述您的日常工作,并自行测试.经过相当多的性能分析后,这是我的经验.在您自己的代码库中没有替代测量.

  • 如果您正在编写实时软件,则需要获取配置文件.绝对没有替代测量.您可以按照所有规则编写代码,而您认为性能优异的东西将成为瓶颈 - 它始终存在.有许多可用于.NET的分析器,包括一些合理的免费分析工具. (2认同)