if_else与三目运算符的效率问题

        在项目中,我们会经常会用到if_else结构,在简单条件下,三目运算符能完成同样的功能。

        但是这两个语句哪个更好,哪个效率更高呢?下面我们就一起来看一下:

        简单的用java写一个for循环:

                                     if_else与三目运算符的效率问题_第1张图片 

                下面这个是三目运算符:


                                   if_else与三目运算符的效率问题_第2张图片 

        使用javap 命令将两个字节码文件反汇编成汇编语言,分别如下:

           if_else与三目运算符的效率问题_第3张图片

                 if_else与三目运算符的效率问题_第4张图片

               可以看到,三目运算符的指令比if_else的指令少一个由此看来,应该是三目运算符的执行效率更高一些。

               但是理论和实际是有一些差距的。还是有必要亲自测试一下。

                同样是100 000次循环,使用StopWatch计算的时间竟然相差不多。这是为什么呢?

               这是因为在java的虚拟机中,两种语句的指令都经过了优化,所以效果是一样的。

               但是在实际应用中,还是推荐使用三目运算符,因为它看起来比较简洁而且易读性较强。

你可能感兴趣的:(数据结构与算法基础)