当前位置: 代码迷 >> Java Web开发 >> 请教这两种for+if的写法哪个更消耗性能呢
  详细解决方案

请教这两种for+if的写法哪个更消耗性能呢

热度:2697   发布时间:2013-02-25 21:18:36.0
请问这两种for+if的写法哪个更消耗性能呢?
写法一:
Java code
int tag = 1;if(tag==1){    for(int i=0; i<10000; i++){        System.out.print("测试A:"+i);    }}else{    for(int i=0; i<10000; i++){        System.out.print("测试B:"+i);    }}


写法二:
Java code
int tag = 1;for(int i=0; i<10000; i++){    if(tag==1){        System.out.print("测试A:"+i);    }else{        System.out.print("测试B:"+i);    }}


------解决方案--------------------------------------------------------
第一种好撒, 一个是不停的判断一个是至判断一次,你认为呢
------解决方案--------------------------------------------------------
实践是检验真理的唯一标准,自己测试下不就完了?

目测是方法一更快,因为if语句执行的次数少了,但实际使用中所能带来的性能提升微乎其微,基本可以忽略不计。

而且方法一代码显得太累赘,所以方法二更合适。


------解决方案--------------------------------------------------------
第一种写法好;因为第一种写法只需要判断一次;而第二种写法需要去循环的判断,这样很费时
------解决方案--------------------------------------------------------
Java code
        int tag = 1;        String method = tag == 1 ? "测试A" : "测试B";        for (int i = 0; i < 10000; i++) {            //循环就尽量让它只是循环            System.out.println(method + i);        }
------解决方案--------------------------------------------------------
探讨
但是如果是个很复杂的if语句,那么又会有什么情况呢?

------解决方案--------------------------------------------------------
楼主有点钻牛角尖了
不过这个牛角尖我以前也钻过~ 
没什么必要在乎这种if对效率的影响 就算他很复杂 时间也只是原来的n(常数)倍
而现实中时间一般是很小的 10^6次循环 还不到0.001秒。 乘以个10, 也感觉不到。


------解决方案--------------------------------------------------------
写个程序大体测一下试试
Java code
    public static void main(String[] args) {        int tag = 1;        java.util.Date begin=new java.util.Date();        if(tag==1){            for(int i=0; i<10000; i++){                System.out.print("测试A:"+i);            }        }else{            for(int i=0; i<10000; i++){                System.out.print("测试B:"+i);            }        }        java.util.Date end=new java.util.Date();        System.out.println();        System.out.println(end.getTime()-begin.getTime());                java.util.Date begin1=new java.util.Date();        for(int i=0; i<10000; i++){            if(tag==1){                System.out.print("测试A:"+i);            }else{                System.out.print("测试B:"+i);            }        }        java.util.Date end1=new java.util.Date();        System.out.println();        System.out.println(end1.getTime()-begin1.getTime());    }}
------解决方案--------------------------------------------------------
探讨

写个程序大体测一下试试
Java code
public static void main(String[] args) {
int tag = 1;
java.util.Date begin=new java.util.Date();
if(tag==1){
for(int i=0; i<10000; i++)……

------解决方案--------------------------------------------------------
看情况而定
------解决方案--------------------------------------------------------
JVM 很聪明,这种代码会进行优化,不管你怎么写!
  相关解决方案