gpt4 book ai didi

c++ - 当没有抛出异常时,C++ 异常以什么方式减慢代码速度?

转载 作者:IT老高 更新时间:2023-10-28 13:58:58 30 4
gpt4 key购买 nike

我已经读到使用 C++ 异常进行异常处理有一些开销,而不是检查返回值。我只是在谈论没有抛出异常时产生的开销。我还假设您需要实现实际检查返回值并执行适当操作的代码,无论这与 catch block 所做的操作等效。而且,将抛出异常对象的代码与内部包含 45 个状态变量的代码与为每个错误返回负整数的代码进行比较也是不公平的。

我并不是仅仅根据可能执行得更快的 C++ 异常来构建一个案例来支持或反对 C++ 异常。我最近听说有人提出,一旦您考虑到检查返回值和处理错误所需的所有额外簿记代码,使用异常的代码应该与基于返回码的代码一样快地运行。我错过了什么?

最佳答案

some 平台和 some 编译器上的异常处理会产生相关成本。

也就是说,Visual Studio 在构建 32 位目标时,将在每个具有非平凡析构函数的局部变量的函数中注册一个处理程序。基本上,它设置了一个 try/finally 处理程序。

gcc 和面向 64 位的 Visual Studio 采用的另一种技术仅在抛出异常时产生开销(该技术涉及遍历调用堆栈和表抬头)。在很少抛出异常的情况下,这实际上可以产生更高效的代码,因为不必处理错误代码。

关于c++ - 当没有抛出异常时,C++ 异常以什么方式减慢代码速度?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1897940/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com