首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > Java Web开发 >

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

2012-06-08 
请问这两种for+if的写法哪个更消耗性能呢?写法一:Java codeint tag 1if(tag1){for(int i0 i10000

请问这两种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 很聪明,这种代码会进行优化,不管你怎么写!

热点排行