【发布时间】:2013-03-12 22:43:37
【问题描述】:
异常处理会产生间接费用(据我所知)....我很欣赏 IF 语句/分支会导致代码变慢。但是,假设您的程序在 99.9% 的时间内正确运行,则分支预测器在大多数情况下都会正确猜测,并且您不需要在整个程序中进行异常处理开销...
因此,在性能关键型应用程序中,使用 IF 语句而不是传统的异常处理来检测错误是否更好?
【问题讨论】:
-
见How much footprint does C++ exception handling add,当没有异常发生时没有开销,而
if-statements 有一个。 -
@ipc 但我理解要启用异常处理,运行时系统必须跟踪更多信息以防万一出现异常......?这就是为什么有一个选项可以在没有异常处理能力的情况下进行编译?
-
是的,但是
assuming your program runs correctly for 99.9%,这不是问题。无论如何都应该很少使用异常。 -
@user997112 二进制大小只有轻微的损失,对大多数人来说应该不重要。
-
即使在性能关键的应用程序中,您也不应该为此烦恼,除非您的分析器告诉您(即使您的平台是整个 Linux 的 200 MHz / 32 Mb RAM - 顺便说一下,我碰巧使用)。过早的优化(微观或其他)是万恶之源。
标签: c++ performance optimization