我想从别人用C#或谁真正理解语言的内部究竟是谁做实时编程的响应。

我知道异常不应该用于处理正常处理,但只以检测错误情况。有足够的讨论这个话题。

我想知道是否有从简单地具有代替try / catch块(其从未捕获异常除非该程序将具有反正结束)任何运行时间减慢。在try / catch块是一个必须反复调用函数中。我怀疑有仅最小的成本。

能的成本在CPU周期,或其他任务(同样的成本为浮点乘法),或另一种方式来量化?

我们使用微软的C#.NET 3.5在Windows XP。

有帮助吗?

解决方案

.NET异常具有非常,非常低的开销成本,除非它们被抛出。有代替try / catch块将有一个很小的性能影响。我发现几乎没有影响,即使是在非常快的,紧密的循环,在地方有异常处理。

不过,在.NET的例外是当他们抛出非常昂贵。他们往往是对性能产生很大影响大,如果你把它们比许多其他语言。这是由于在创建异常时收集的完整的堆栈信息,等等。

这是相反的行为,以某些其它语言,如蟒,其中异常处理具有更高的成本,但投掷实际上是相当高性能的。

不过,如果你担心,我会建议您分析您的常规,并测试它自己。这一直是相当多的性能分析之后我的经验。没有替代在自己的代码库进行测量。

其他提示

很好的讨论,有度量,尝试捕捉这里的性能影响的。

不要try / catch块伤的性能当异常不抛出?

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top