Java中的异常对程序效率有无影响
来源:互联网 发布:算法设计与分析考试题 编辑:程序博客网 时间:2024/06/04 21:51
当异常没有发生时,没有影响。
其实从异常实现的角度来看,在throw语句处,跳转到异常的处理代码,不同的异常处理,应该类似C++中的虚函数表一样的数构结构(待考证)。
所以如果没有抛出异常,那和普通的代码完全一样。至于在抛出异常时要处理的开销和不使用异常,用返回码等来判断不同的错误,不仅代码复杂,而且也一样要有处理的开销。
测试代码:
import java.util.Date;public class Test {long size = 1000000000L;public static void main(String[] args) {Test t = new Test();t.test1();t.test1();t.test1();t.test2();t.test2();t.test2();t.test1();t.test1();t.test1();t.test2();t.test2();t.test2();}long func1(long i) throws Exception{if(i == 0){throw new Exception("abc");}return i-1;}long func2(long i){if(i == 0){return i + 1;}return i -1;}void test1(){Date begin = new Date();long total = 0;for(long i = 1; i < size; ++i){try {total += func1(i);} catch (Exception e) {e.printStackTrace();}}Date end = new Date();System.out.println(total);System.out.println("test1 time:" + (end.getTime() - begin.getTime()));}void test2(){Date begin = new Date();long total = 0;for(long i = 1; i < size; ++i){total += func2(i);}Date end = new Date();System.out.println(total);System.out.println("test2 time:" + (end.getTime() - begin.getTime()));}}
总结:异常是个很有用的功能,在不抛出异常时,开销可以忽略不计。
在C++中也是如此。(TODO:测试C++代码中异常的效率)
- Java中的异常对程序效率有无影响
- PHP中的异常处理对程序执行效率的影响
- 程序循环顺序对效率的影响
- 金融危机对中国互联网有无影响
- 静态与非静态对程序效率的影响
- malloc动态申请内存空间对程序效率的影响
- java异常处理对性能的影响
- java程序中的效率问题
- SQL语句对Java中ResultSet效率的影响
- 异常处理对效率的影响——你不知道的异常(三)
- 约束对效率的影响
- JAVA程序中的异常
- Mysql有无group by 对max函数查询结果的影响 ResultSet中有无记录受到影响
- java static块异常对类加载的影响
- 时钟频率对程序效率影响测试(Platform: ARM ZYNQ 7000 ZP20 Board)
- java环境变量对编译java程序的影响
- Visual Studio中Debug模式中的inline函数对效率的影响
- 数据库Index对效率的影响
- 面向对象设计原则之合成复用原则
- iphone No architectures to compile for (ARCHS=i386, VALID_AR
- 面向对象设计原则之迪米特法则
- TMD/WL (Themida / Winlicense ) SDK VM的解决方案 (应用篇,非引擎分析)
- hdoj 1253 胜利大逃亡 宽度优先遍历
- Java中的异常对程序效率有无影响
- USACO Riding The Fences 与欧拉路径问题
- IE10 中增强的内存保护
- 创建工厂和双分派工厂
- C病毒读写,自我启动复制
- vMware安装Ghost操作系统
- 七龙珠ol恋情语录
- 复制改进
- 线程