首页 / 知识
关于性能:测量C ++中的异常处理开销
2023-04-14 04:10:00

Measuring exception handling overhead in C++衡量C ++中异常处理开销/性能的最佳方法是什么? 请提供独立的代码示例。 我的目标是Microsoft Visual C ++ 2008和gcc。 我需要从以下情况获得结果: 有关C ++性能的技术报告草稿中的5.4节完全涉及异常的开销。 作为建议:抛出异常时,不要为开销过多地打扰。异常处理实现通常不会使快速抛出和捕获缓慢。没关系,因为这些案例很特殊。 卡尔 这是我想出的测量代码。您看到任何问题吗? 到目前为止,可在Linux和Windows上运行,并使用以下命令进行编译:
或例如Visual C ++ Express。 要获取基本情况("从语言中完全删除了例外支持"),请使用:
或MSVC中的类似设置。 这里有一些初步结果。由于机器负载的变化,它们可能都是骗人的,但是它们确实提供了有关相对异常处理开销的一些信息。 (执行摘要:没有抛出异常时什么都不是,实际上抛出异常时很大。)
凯文·弗雷(Kevin Frei)在他的演讲" Windows上C ++异常处理的代价"中谈到了异常处理的性能代价。 (在"摘要和结论"下,有一个列表项表示" [异常处理性能成本并非总是可衡量的"。) 关于异常处理性能的另一个注意事项:简单测试不考虑缓存。尝试代码和捕获代码都很小,以至于所有内容都适合指令和数据缓存。但是编译器可能会尝试将捕获代码移离try代码,从而减少正常保存在缓存中的代码量,从而提高性能。 如果将异常处理与传统的C风格的返回值检查进行比较,则还应考虑这种缓存效果(在讨论中通常会忽略此问题)。 卡尔 没有真正好的方法可以在代码中进行测量。您将需要使用分析器。 这不会直接向您显示花费多少时间进行异常处理,但是通过一点点研究,您会发现哪些运行时方法可以处理异常(例如,对于VC ++。NET,它是__cxx_exc [...])。 加倍他们的时间,你就有开销。在我们的项目中,我们使用了Intel的vTunes,它可以与Visual C ++和gcc一起使用。 编辑:好吧,如果您只需要一个可能有效的通用编号。以为您有一个实际的应用程序可以分析您无法关闭异常的情况。 这里显示了有关g ++如何处理异常的完整详细信息。它描述它是用于Itanium体系结构,但是所使用的通用技术是相同的。它不会告诉您确切的时间开销,但是您可以了解大致的代码开销。 答案是否取决于抛出后必须进行的清理?如果抛出一个异常导致整个对象的负载超出堆栈范围,那么这将增加开销。 换句话说,我不确定第三个问题的答案是否独立于代码的细节。 |
最新内容
相关内容
linux性能测试命令?
linux性能测试命令?,数据,系统,工具,标准,设备,地址,情况,基础,网络,环境,如何排除linux系统的读写缓存进行磁盘性能测试chkdsk。chkdsk的全称linux命令3d性能?
linux命令3d性能?,系统,工具,实时,百分比,信息,分析,软件,情况,网站,建设,Linux常用性能诊断命令详解1、第二行信息依次为:进程总数、运行中的linux性能管理命令?
linux性能管理命令?,工具,系统,信息,状态,网络,情况,工作,时间,短信,平均,linux性能监控工具有哪些1、开源网络监控工具:NetXMS NetXMS提供了企linux性能调参命令?
linux性能调参命令?,工具,工作,信息,网络,分析,系统,地址,实时,管理,状态,在linux中top命令的具体用法是什么?1、top命令用于显示系统运行的进linux性能找不打命令?
linux性能找不打命令?,系统,实时,软件,名字,分析,信息,情况,工具,电脑,时间,linux找不到命令要安装什么服务Linux中的ftp服务器一般是安装vsft7个提升Python程序性能的好习惯
7个提升Python程序性能的好习惯,代码,名字,检测,数据,培训,模块,函数,变量,性能,对象,掌握一些技巧,可尽量提高Python程序性能,也可以避免不必Python的异常处理
Python的异常处理,异常,代码,信息,数据,名字,语句,文件,检测,培训,发生,什么是异常?异常即是一个事件,该事件会在程序执行过程中发生,影响了程提升Python程序性能的好习惯
提升Python程序性能的好习惯,代码,名字,检测,数据,培训,模块,函数,变量,性能,对象,掌握一些技巧,可尽量提高Python程序性能,也可以避免不必要的Python 性能剖分工具
Python 性能剖分工具,时间,工具,环境,分析,数据,代码,标准,人员,项目,培训,眼看着项目即将完成,却被测试人员告知没有通过性能测试,这种情况在Python性能分析
Python性能分析,代码,分析,对比,时间,工具,标准,注释,跨行,通用,报告,python标准库提供两个代码性能分析相关的模块,即timeit和cProfile/profipython异常处理的作用
python异常处理的作用,异常,培训,代码,作用,程序,变量,实例,后面,定义,机制,python异常处理的作用1、解析器去执行程序,检测到错误时触发异常,python异常处理关键字
python异常处理关键字,异常,代码,数据,名字,信息,系统,电脑,检测,环境,培训,python异常处理关键字本文教程操作环境:windows7系统、Python3.9.