【问题标题】:Cheaper to use IF statements rather than exception handling? [duplicate]使用 IF 语句而不是异常处理更便宜? [复制]
【发布时间】: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


【解决方案1】:

if 语句相比,异常处理的典型实现不会增加主执行流的开销(在速度方面)(甚至可能会增加一点)。通过合理谨慎的使用,它还可以减少代码混乱,提高可读性。

IOW,对于完全有意义的代码,它通常是一个相当大的胜利,非常几乎没有缺点。主要的潜在缺点是更大的可执行文件,并且需要运行时支持,因此它并不真正适合设备驱动程序之类的东西(至少在正常情况下)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-12-08
    • 2021-12-18
    • 1970-01-01
    • 2014-10-24
    • 1970-01-01
    • 2016-04-21
    • 2014-02-15
    • 1970-01-01
    相关资源
    最近更新 更多