c++ - 潜在的异常会带来开销吗?

标签 c++ performance exception overhead

当不抛出异常时,一段可能抛出异常的代码与没有抛出异常的类似代码相比,性能是否会下降?

最佳答案

已经证明可以在“正常”(非异常相关)代码中以零开销实现 C++ 异常处理机制。然而,在实践中,编译器通常坚持更简单的实现,这通常会导致效率较低的“正常”代码。编译器必须考虑到潜在异常在函数层次结构中飞来飞去的可能性,因此会生成一些额外的家庭操作,以便在抛出异常时能够正确展开堆栈。无论是否抛出异常,这些额外的家庭代码都会影响代码的整体效率。

这完全是 QoI(实现质量)问题。它是特定于编译器的。检查您的编译器以获取更多详细信息。一些编译器实际上提供了启用/禁用 C++ 异常的选项,以便在根本不使用异常时生成最高效的代码。

关于c++ - 潜在的异常会带来开销吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1834405/

相关文章:

c++ - 弃用的函数和 fseek()

sql - 使用GROUP BY执行SELECT的更好方法

java - 如何中断 Java Semaphore.tryAcquire 函数

c++ - catch 语句中可以发生复制省略吗?

C++ 推荐的 RAII 类型声明方式(unique_lock)

c++ - wxImage 并绘制原始 rgb 字节

C 中的 union 解引用和递减

MySQL:一个普通的盒子每秒可以支持多少次更新?

python引发错误异常

c++ - 协变虚函数和智能指针