首页 >后端开发 >C++ >C 异常真的很慢吗:性能分析?

C 异常真的很慢吗:性能分析?

Susan Sarandon
Susan Sarandon原创
2024-12-03 17:20:11327浏览

Are C   Exceptions Really Slow: A Performance Analysis?

C 异常的缓慢

有人声称 C 中的异常非常慢。虽然在该语言的早期版本中确实如此,但现代实现中情况已不再如此。

零成本模型

今天,主要的异常模型C 中是零成本模型。该模型利用一个侧表,将可能抛出异常的点映射到处理程序列表。当异常被触发时,会参考侧表来确定适当的处理程序。

成本比较

与传统的“if”错误策略相比,零-成本模型:

  • 当异常不存在时,对性能没有影响发生
  • 发生异常时,成本大约是“if”检查的 10-20 倍

但是,异常的成本并不完全简单。边表可能会导致缓存未命中,从而减慢获取过程。此外,识别正确的处理程序涉及 RTTI 操作,这在计算上可能会很昂贵。

性能影响

尽管存在这些潜在的瓶颈,异常通常比显式错误检查更快大多数情况下。它们使程序员摆脱了设置防护和显式检查异常的负担。

异常使用注意事项

虽然异常可以提高代码的可读性和可维护性,但它们的使用应该仔细考虑。当调用者不能或不想直接处理失败并且更愿意将其进一步推迟到调用堆栈中时,应该使用异常。

在性能至关重要的情况下,程序员可以选择显式错误检查。然而,当优先考虑可读性和可维护性时,异常仍然是有效管理错误的宝贵工具。

以上是C 异常真的很慢吗:性能分析?的详细内容。更多信息请关注PHP中文网其他相关文章!

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