首页 >后端开发 >C++ >C 异常仍然是性能瓶颈吗?

C 异常仍然是性能瓶颈吗?

Barbara Streisand
Barbara Streisand原创
2024-12-02 13:41:09459浏览

Are C   Exceptions Still a Performance Bottleneck?

C 中的异常仍然很慢吗?

Andrei Alexandrescu 声称 C 异常非常慢引起了人们对其在 C 98 中的效率的担忧。然而,当前的异常处理模型(称为零成本模型异常)解决了这个问题

在零成本模型中,编译器创建一个侧表,将可能抛出异常的点映射到处理程序列表。当异常发生时,该表用于确定适当的处理程序并展开堆栈。这个过程比在每个点显式检查异常要快得多。

与传统的 if(错误)策略相比,零成本模型:

  • 没有异常时免费发生
  • 发生异常时,成本约为 if 语句的 10 倍到 20 倍发生

但是,由于缓存未命中和 RTTI 开销等因素,性能测量可能具有挑战性。

在异常路径上缓慢

尽管效率有所提高,异常路径上的异常处理仍然很慢。然而,与对大多数代码路径进行显式检查相比,它们的速度优势通常会抵消这一点。

可读性与性能

无论性能考虑如何,代码可读性应该被优先考虑。当调用者不能或不希望在本地处理故障时,应使用异常。然而,C 11 标准允许检查引用,从而为异常处理提供更受控制的方法。

结论

虽然异常可能不会很快,但它们的性能影响与它们为可读性和代码组织提供的好处相比,这是微乎其微的。开发人员应该优先考虑代码的清晰度和易于维护性,而不是过早的优化问题。

以上是C 异常仍然是性能瓶颈吗?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn