当不抛出异常时,一段可能抛出异常的代码与没有抛出异常的类似代码相比,性能是否会下降?
最佳答案
已经证明可以在“正常”(非异常相关)代码中以零开销实现 C++ 异常处理机制。然而,在实践中,编译器通常坚持更简单的实现,这通常会导致效率较低的“正常”代码。编译器必须考虑到潜在异常在函数层次结构中飞来飞去的可能性,因此会生成一些额外的家庭操作,以便在抛出异常时能够正确展开堆栈。无论是否抛出异常,这些额外的家庭代码都会影响代码的整体效率。
这完全是 QoI(实现质量)问题。它是特定于编译器的。检查您的编译器以获取更多详细信息。一些编译器实际上提供了启用/禁用 C++ 异常的选项,以便在根本不使用异常时生成最高效的代码。
关于c++ - 潜在的异常会带来开销吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1834405/