public int sumDouble(int a, int b) {
if(a == b){
   return 2*(a+b);
}else{
    return a+b;
}  
}
public int sumDouble(int a, int b) {
 
  int sum = a + b;
  
  if (a == b) {
    sum = sum * 2;
  }
  
  return sum;
}

解决方案 »

  1.   

    后面的程序只是多了个变量,在java里变量是几乎不占内存的,占内存的是对象,所以说性能上也是一样的。你这两个程序一点本质上没有区别
      

  2.   

    先计算 a+b 的:public int sumDouble(int, int);
      Code:
       0: iload_1
       1: iload_2
       2: iadd
       3: istore_3
       4: iload_1
       5: iload_2
       6: if_icmpne 13
       9: iload_3
       10: iconst_2
       11: imul
       12: istore_3
       13: iload_3
       14: ireturn先判断 a 和 b 是否相等的:public int sumDouble(int, int);
      Code:
       0: iload_1
       1: iload_2
       2: if_icmpne 11
       5: iconst_2
       6: iload_1
       7: iload_2
       8: iadd
       9: imul
       10: ireturn
       11: iload_1
       12: iload_2
       13: iadd
       14: ireturn当 a == b ,两个方法都执行13条指令;
    当 a != b ,前者执行9条指令,后者执行7条指令
    不过是jvm指令而不是汇编,并且也没考虑CPU和编译器,所以这也说明不了什么
      

  3.   

    测也测不出区别来,怎么爽就怎么写。java的micro bench就是个谎言,别纠结了
      

  4.   

    从当前的代码来看是性能一样,不管if还是else都只需要执行一次a+b,至于赋值操作之类的可以忽略。
    但是,第二段代码可读性更强。
      

  5.   

    [img=http://forum.csdn.net/PointForum/ui/scripts/csdn/Plugin/003/monkey/2.gif]请教一下,怎么得到这些JVM指令的