Re: HotSpot JVMの落とし穴

http://d.hatena.ne.jp/sumii/20071229/p2
ほんとにそんなことが!と思って試してみた。しかし、有意な結果が出ない。
テストプログラムにはこういうプログラムを書いた。

public class Main {
  public static void main (String[] args)
  {
    int n = 100000000;
    long t0 = System.currentTimeMillis();
    int i1 = if_break(n);
    long t1 = System.currentTimeMillis();
    int i2 = if_not_break(n);
    long t2 = System.currentTimeMillis();

    p("if_break    : " + (t1 - t0));
    p("if_not_break: " + (t2 - t1));
  }

  static void p (String s) { System.out.println(s);}

  static int if_break (int n)
  {
    int i = 0, res = 0;
    while (true) {
      res += i;
      ++i;
      if (i > n) { break;} else {}
    }
    return res;
  }

  static int if_not_break (int n)
  {
    int i = 0, res = 0;
    while (true) {
      res += i;
      ++i;
      if (i <= n) {} else { break;}
    }
    return res;
  }
}

javapの結果

static int if_break(int);
  Code:
   0:   iconst_0
   1:   istore_1
   2:   iconst_0
   3:   istore_2
   4:   iload_2
   5:   iload_1
   6:   iadd
   7:   istore_2
   8:   iinc    1, 1
   11:  iload_1
   12:  iload_0
   13:  if_icmple       4
   16:  goto    19
   19:  iload_2
   20:  ireturn

static int if_not_break(int);
  Code:
   0:   iconst_0
   1:   istore_1
   2:   iconst_0
   3:   istore_2
   4:   iload_2
   5:   iload_1
   6:   iadd
   7:   istore_2
   8:   iinc    1, 1
   11:  iload_1
   12:  iload_0
   13:  if_icmpgt       19
   16:  goto    4
   19:  iload_2
   20:  ireturn