下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、软件测试之Java异常对于性能的影响 在对OneAPM的客户做技术支持时,我们常常会看到很多客户根本没意识到的异常。在消除了这些异常之后,代码运行速度与以前相比大幅提升。这让我们产生一种猜测,就是在代码里面使用异常会带来显著的性能开销。因为异常是错误情况处理的重要组成部分,摒弃是不太可能的,所以我们需要衡量异常处理对于性能影响,我们可以通过一个实验看看异常处理的对于性能的影响。实验我的实验基于一段随机抛出异常的简单代码。从科学的角度,这并非完全准确的测量,同时我也并不了解HotSpot 编译器会对运行中的代码做何动作。但无论如何,这段代码应该能够让我们了解一些基本情况。结果很有意思:抛出与捕获
2、异常的代价似乎极低。在我的例子里,大约是每个异常 0.02 毫秒。除非你真的抛出太多异常(我们指的是 10 万次或者更多),否则这一点基本都可忽略。 尽管这些结果显示出异常处理本身并不影响代码性能,但却并未解决下面这个问题:异常对性能的巨大影响该由谁负责?我明显遗漏了什么重要的问题。重新想了一下,我意识到自己遗漏了异常处理的一个重要部分。我没考虑到异常发生时你做了什么。在多数情况下你很有可能不仅仅是捕获异常!而问题就在这里:一般情况下,你会试图对问题进行补充,并让应用在最终用户那里仍能发挥功能。所以我遗漏的就是:“”为了处理异常而执行的补充代码“”。按照补充代码的不同,性能损失可能会变得相当显
3、著。在某些情况下这可能意味着重试连接到服务器,在另一些情况下则可能意味着使用默认的回滚方案,而这种方案提供的解决办法肯定会带来非常差劲的性能。对于我们在很多情况下看到的行为,这似乎给出了很好的解释。不过我却不觉得分析到这里已经万事大吉,而是感到这里还遗漏了别的什么东西。Stack trace对此问题,我仍颇为好奇,为此监视了收集 strack trace 时情况性能有何变化。经常发生的情况应该是这样的:记下异常及其栈轨迹,尝试找出问题到底在哪。为此我修改了代码,额外收集了异常的 strack trace 。这让情况显著改变。对异常的 strack trace 的收集,其性能影响要比单纯捕获并抛
4、出异常高出10倍。因此尽管 strack trace 有助于理解哪里发生了问题(有可能还有助于理解为何发生问题),但却存在性能损失。 由于我们谈论的并非一条 strack trace,所以此处的影响往往非常之大。多数情况下,我们都要在多个层次上抛出并捕获异常。 我们看一个简单的例子: Web 服务客户端连接到服务器。首先,Java 库级别上存在一个连接失败异常。此后会有框架级别上的客户端失败异常,再以后可能还会有应用层次上的业务逻辑调用失败异常。到现在为止,总共要搜集三条strack trace。 多数情况下,你都能从日志文件或者应用输出中看到这些 strack trace,而写入这些较长的strack trace 往往也会也带来性能影响。结论首先因为存在性能影响而把异常弃之不用并非良策。异常有助于提供一种一致的方式来解决运行时问题,并且有助于写出干净的代码。但我们应该对代码中抛出的异常数量进行跟踪,它们可能导致显著的性能影响。所以 OneAPM 默认要对所抛出的异常进行跟踪在很多情况下人们都会对代码中发生的异常以及在解决这些异常时的性能损耗感到吃惊不已。 其次尽管使用异常很有裨益,您也应避免捕获过多的 strack trace。异常应该是为异常的情
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2027届高三数学一轮复习课件:第八章 高考热点11 圆锥曲线中的最值与范围问题
- 2026中央戏剧学院招聘9人考试备考试题及答案解析
- 2026年及未来5年市场数据中国字典行业发展前景预测及投资策略研究报告
- 商品监督员岗前实操效果考核试卷含答案
- 水产捕捞工诚信测试考核试卷含答案
- 2026年通化公益性岗位招聘(7人)考试参考题库及答案解析
- 2026年滨州市面向社会公开招聘硕博士高层次人才(129人)考试参考题库及答案解析
- 2026中国福利会国际和平妇幼保健院招聘笔试备考试题及答案解析
- 国家管网集团共享运营分公司2026届春季高校毕业生招聘考试参考题库及答案解析
- 暗盒生产工岗前工作合规化考核试卷含答案
- 拖式混凝土输送泵的泵送部分设计(全套图纸)
- 正畸治疗的生物机械原理-矫治力与牙齿的移动(口腔正畸学课件)
- 粮食仓储企业安全风险辨识与管控分级指南
- 危化企业双重预防机制数字化建设运行成效评估
- 2022年苏州太仓市特殊教育岗位教师招聘考试笔试试题及答案解析
- YS/T 1152-2016粗氢氧化钴
- 派昂医药协同应用价值
- GB/T 2521.1-2016全工艺冷轧电工钢第1部分:晶粒无取向钢带(片)
- GB/T 24405.1-2009信息技术服务管理第1部分:规范
- 基础会计简答题及答案
- 综合故障解决-排除p2a
评论
0/150
提交评论