【发布时间】:2013-06-29 11:12:17
【问题描述】:
他们告诉我们不要使用异常来控制程序的流程,因为抛出异常很慢。我从来没有听过任何解释为什么抛出异常这么慢。
所以问题是:
抛出异常的机制是什么?涉及哪些可能会影响性能的特定操作?
编辑:
一些澄清:我想听听操作系统需要什么额外的工作来处理抛出异常。用户模式和内核模式之间是否有一些昂贵的切换?或者也许构造异常对象是昂贵的?或者,也许我缺少切换程序流程的东西?我的问题与编程语言无关(我希望如此,但证明我错了)。但是,如果您需要一些锚点,那么我对与此主题相关的 .NET 内部最感兴趣。
EDIT2:
我对异常性能没有任何问题。我只是想了解这个机制的内部原理。
EDIT3:
让我的问题更清楚。
【问题讨论】:
-
你指的是哪种语言的哪种实现,谁说它的异常处理很慢?
-
我指的是一般的抛出异常,我猜每个人都在说:我的学术老师,我的同事,我的老板,互联网上的每个人:)
-
如果你因为异常而出现性能问题,不仅仅是异常慢,而是你抛出了太多方式的异常。换句话说,如果您正确使用异常来指示异常问题,那么您就不必费心了。
-
一种常见的说法是:如果您关心异常性能,那么您可能过度使用异常。但是性能仍然是一个很好的讨论。
标签: .net performance exception internals