为了账号安全,请及时绑定邮箱和手机立即绑定

java try...catch语句为什么会降低程序运行速度?

java try...catch语句为什么会降低程序运行速度?

红糖糍粑 2018-12-06 20:56:03
请详细分析或者发个有详细分析的链接。 嫌我问题短。。。把代码也发一下吧。 double b = 0; String s = ""; long ii = System.currentTimeMillis(); for(int i = 0; i<20000;i++) { try { b = StrictMath.pow(b+i, 1.0/3); s = s + b+";"; }catch(Exception e){ e.printStackTrace(); }finally { } } //System.out.println("b = "+b + "\ns = "+ s); System.out.println(System.currentTimeMillis()-ii); double c = 0; String ss = ""; long iii = System.currentTimeMillis(); for(int i = 0; i<20000;i++) { c = StrictMath.pow(c+i, 1.0/3); ss = ss + c+";"; } //System.out.println("b = "+c + "\nss = "+ ss); System.out.println(System.currentTimeMillis()-iii); 这是我的测试代码,输出如下 1711416397
查看完整描述

4 回答

?
湖上湖

TA贡献2003条经验 获得超2个赞

你可以把

for(int i = 0; i<20000;i++) {
            try {
                b = StrictMath.pow(b+i, 1.0/3);
                s = s + b+";";
            }catch(Exception e){
                e.printStackTrace();
            }finally {

            }
        }

修改为:


            try {

for(int i = 0; i<20000;i++) {
                b = StrictMath.pow(b+i, 1.0/3);
                s = s + b+";";
        }
            }catch(Exception e){
                e.printStackTrace();
            }finally {
            }

这样会好很多(依据你的循环次数而定).但是仍然比没有 try catch 的代码执行要慢.加了 try catch 后,除了会增加代码体积,还会消耗额外的资源.

因为发生了异常后,程序的执行路线需要从 try 保护体中跳转到 catch 过滤表达式中,那么编译器在编译期间必须产生必要的代码和数据结构与系统的异常分发函数密切配合,大体来讲就是分析异常处理代码的结构,封装和标记每部分,注册异常处理器函数.

从这个过程来看,在没有异常产生时,代码体积增大了,执行的语句增多了,自然程序执行效率就低;发生异常后,需要分发异常到指定的异常处理函数,析构局部变量,没有匹配的异常处理函数时,还要展开当前调用栈,向上寻找匹配的异常处理函数.

查看完整回答
反对 回复 2018-12-16
?
HUX布斯

TA贡献1876条经验 获得超6个赞

很正常嘛,try异常本来就是耗系统资源的。

查看完整回答
反对 回复 2018-12-16
?
UYOU

TA贡献1878条经验 获得超4个赞

听说try里面的代码,每执行一句,系统要检查一下异常列表,看是否有异常,即便是int 这些声明变量的语句。

查看完整回答
反对 回复 2018-12-16
?
繁花如伊

TA贡献2012条经验 获得超12个赞

你多运行几次试试,结果肯定不一样,运行时间还跟你程序分配到的cpu时间有关,如果在运行第一个的时候电脑还在运行其他程序时间自然会比较慢。

我个人认为常说的try...catch耗资源是因为产生异常后,对系统的资源消耗比较大,不产生异常影响是不大的。

查看完整回答
反对 回复 2018-12-16
  • 4 回答
  • 0 关注
  • 817 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号