Stack trace对性能的影响
2015-06-19 09:53
393 查看
package ceshi; public class ExceptionTest { public long maxLevel = 20; public static void main(String[] args) { ExceptionTest test = new ExceptionTest(); long start = System.currentTimeMillis(); int count = 100; for(int i = 0; i < count; i++){ try{ test.doTest(2, 0); }catch (Exception e) { // e.printStackTrace(); } } long diff = System.currentTimeMillis() - start; System.out.println(((double)diff/count)); } public void doTest(int i, int level){ if(level < maxLevel){ try{ doTest(i, ++level); }catch (Exception e) { // e.printStackTrace(); throw new RuntimeException("UUPS", e); } }else{ if(i > 1){ throw new RuntimeException("Ups"); } } } }
不加注释的情况下平均时间为0.015ms,
加注释的情况下平均时间为38.05ms。
性能倍数是2537倍。
总结:
因为存在性能影响而把异常弃之不用并非良策。异常有助于提供一种一致的方式来解决运行时问题,并且有助于写出干净的代码。但我们应该对代码中抛出的异常数量进行跟踪,它们可能导致显著的性能影响。其次尽管使用异常很有裨益,您也应避免捕获过多的 strack trace。异常应该是为异常的情况而设计的,使用时应该牢记这一原则。
相关文章推荐
- MVVM模式中ViewModel和View、Model有什么区别?
- Mysql常用命令
- easyUI如何选择使用指定的locale
- GC
- 前端开发规范之html编码规范
- J2EE说明
- 两款高性能并行计算引擎Storm和Spark比较
- Java的代理模式(通过公共接口实现)
- eclipse 调整代码提示速度
- Android笔记之关于 overridePendingTransition()使用
- 使用Xcode和Instruments调试解决iOS内存泄露
- 算法练习-NOJ-1442-埃及分数
- iOS 图片实现马赛克效果
- 【Android】解决Android的ListView控件滚动时背景变黑
- 【Unity快速实现小功能】声音控制三部曲之(二)—— 音效与背景音乐的叠加及控制
- JavaScript中数据结构与算法(五):经典KMP算法
- Implicit intents with startService are not safe错误的解决方式
- 文件编码UNICODE、UTF-8、ANSI、ASCII、GB2312、GBK详解
- SQL Server 系统表介绍:dm_exec_connections
- java面试