【发布时间】:2010-09-19 08:11:40
【问题描述】:
我已经阅读了很多关于 C++ 异常的内容以及我所看到的,特别是异常性能是一个很难的话题。我什至试图深入了解 g++ 的底层,看看异常在汇编中是如何表示的。
我是一名 C 程序员,因为我更喜欢低级语言。前段时间我决定使用 C++ 而不是 C,因为它可以让我的生活更轻松(类而不是结构、模板等)。
回到我的问题,因为我看到异常确实会产生开销只有在它们发生时才会萌芽,因为它需要一长串的跳转和比较指令才能找到适当的异常处理程序。在正常的程序执行中(没有错误)异常开销等于正常的返回码检查。我说的对吗?
【问题讨论】:
-
感谢标题中的“再次”后缀。
-
我认为答案是特定于编译器的
-
如果您想了解性能影响,衡量它。
-
如果我没记错的话,现代平台上的现代实现对于无异常路径的开销为零。您可能想查看可以从open-std.org/jtc1/sc22/wg21 下载的“C++ 性能报告”
-
在许多情况下,类似 C 的手动错误检查变得如此复杂,以至于程序员的开销甚至超过了带有异常的普通编译器。