C 中的异常仍然很慢吗?
Andrei Alexandrescu 声称 C 异常非常慢引起了人们对其在 C 98 中的效率的担忧。然而,当前的异常处理模型(称为零成本模型异常)解决了这个问题
在零成本模型中,编译器创建一个侧表,将可能抛出异常的点映射到处理程序列表。当异常发生时,该表用于确定适当的处理程序并展开堆栈。这个过程比在每个点显式检查异常要快得多。
与传统的 if(错误)策略相比,零成本模型:
但是,由于缓存未命中和 RTTI 开销等因素,性能测量可能具有挑战性。
在异常路径上缓慢
尽管效率有所提高,异常路径上的异常处理仍然很慢。然而,与对大多数代码路径进行显式检查相比,它们的速度优势通常会抵消这一点。
可读性与性能
无论性能考虑如何,代码可读性应该被优先考虑。当调用者不能或不希望在本地处理故障时,应使用异常。然而,C 11 标准允许检查引用,从而为异常处理提供更受控制的方法。
结论
虽然异常可能不会很快,但它们的性能影响与它们为可读性和代码组织提供的好处相比,这是微乎其微的。开发人员应该优先考虑代码的清晰度和易于维护性,而不是过早的优化问题。
以上是C 异常仍然是性能瓶颈吗?的详细内容。更多信息请关注PHP中文网其他相关文章!