我正在观看C++中的系统错误处理 - Andrei Alexandrescu他声称这Exceptions in C++非常非常慢.
我想知道这是否仍然适用 C++98
这个问题对于嵌入式开发尤为重要.异常处理为生成的二进制输出增加了一些空间.另一方面,没有例外,错误需要以其他方式处理,这需要额外的代码,这最终也会增加二进制大小.
我对你的经历很感兴趣,特别是:
请仅以我的问题为指导.欢迎任何输入.
附录:对于特定的C++对象/可执行文件,是否有任何人具有具体的方法/脚本/工具,它将显示由编译器生成的代码和专用于异常处理的数据结构占用的已加载内存占用的百分比?
这个链接指出,
为了捕获异常,我们必须将一部分代码置于异常检查之下.这是通过将该部分代码包含在try块中来完成的.当在该块内出现异常情况时,抛出异常将控制转移到异常处理程序.如果没有抛出异常,代码将继续正常运行并忽略所有处理程序.
这是否意味着由于在运行时"检查"的额外任务,使用try块会降低性能?
我正在讨论在新的C++项目中采用哪种方式.由于以下原因,我赞成对返回代码的异常(仅限特殊情况) -
这些是我从思考它和谷歌搜索中得出的要点.我必须承认,在过去的几年中,我倾向于使用C#工作的例外情况.请在退货代码上发布使用例外的进一步原因.对于那些喜欢返回代码的人,我也愿意倾听你的推理.谢谢
我已经阅读了很多关于C++异常和我看到的内容,特别是异常性能是一个难题.我甚至试图在g ++的内幕下看看如何在汇编中表示异常.
我是C程序员,因为我更喜欢低级语言.前段时间我决定使用C++而不是C,因为它的成本很低,它可以让我的生活更轻松(类比结构,模板等).
回到我的问题,因为我看到异常只会在它们发生时生成开销,因为它需要一长串的跳转和比较指令才能找到合适的异常处理程序.在正常的程序执行中(没有错误),异常开销等于正常的返回代码检查.我对吗?
例如,我正在编写一个多线程时间关键型应用程序,可以实时处理和流式传输音频.音频中断是完全不可接受的.这是否意味着我不能使用STL,因为抛出异常时可能会减慢速度?
某处我已阅读,现代的Intel处理器具有低级别的硬件实现异常和大多数编译器利用它,到例外变得比使用返回变量结果状态较快的影响.
这是真的吗?就返回状态/响应状态而言,是否比变量更快?读取堆栈溢出的话题似乎与此相矛盾.
谢谢