首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >C#实时尝试捕获

C#实时尝试捕获
EN

Stack Overflow用户
提问于 2009-08-28 15:45:33
回答 2查看 2.1K关注 0票数 7

我希望那些真正使用C#进行实时编程的人或者真正理解该语言内部原理的人能给我回复。

我知道异常不应该用来处理正常的处理,而只能用来检测错误条件。关于这个话题有很多讨论。

我想知道简单地使用try/catch块是否会降低运行时的速度(它永远不会捕获异常,除非程序无论如何都要结束)。try/catch块位于必须重复调用的函数中。我怀疑这样做的成本很低。

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

我们使用的是windows XP下的微软C#.Net 3.5。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2009-08-28 15:49:38

除非抛出异常,否则.NET异常的开销非常非常低。将try/catch块放在适当的位置将对性能的影响非常小。我发现,即使在非常快、很紧的循环中,也几乎没有对异常处理的影响。

然而,当抛出异常时,.NET中的异常是非常昂贵的。如果你抛出它们,它们往往比许多其他语言对性能的影响要大得多。这是由于创建异常时收集的完整堆栈信息造成的,等等。

这与其他一些语言的行为相反,比如python,在这些语言中,异常处理的成本较高,但抛出的性能实际上相当高。

但是,如果你担心,我建议你概述你的程序,并自己测试它。这是我在进行了相当多的性能分析之后的经验。在您自己的代码库中测量是不可替代的。

票数 11
EN

Stack Overflow用户

发布于 2009-08-28 15:57:30

在这里对try catch的性能影响进行了很好的讨论。

Do try/catch blocks hurt performance when exceptions are not thrown?

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1347848

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档