哪个循环在J2ME中最快?

时间:2012-01-06 08:37:29

标签: java java-me

J2ME中有forwhiledo-while。哪一项最快?

2 个答案:

答案 0 :(得分:8)

除非你有一些通常不可用的信息,否则这些循环在性能方面都是相同的。

循环开销通常不是性能瓶颈。

答案 1 :(得分:7)

最重要的是为问题使用最简单,最清晰的循环。

我建议for在概念上更长,因为它可用于初始化变量。相反,如果你在循环之前初始化变量,它将是相同的。

如果比较

的字节码
public static void main(String... args) {
    for (int i = 0; i < 10; i++) {

    }

    int i = 0;
    while (i < 10) {
        i++;
    }
}

public static void main(java.lang.String...);
   0: iconst_0      
   1: istore_1      
   2: iload_1       
   3: bipush        10
   5: if_icmpge     14
   8: iinc          1, 1
  11: goto          2

  14: iconst_0      
  15: istore_1      
  16: iload_1       
  17: bipush        10
  19: if_icmpge     28
  22: iinc          1, 1
  25: goto          16
  28: return 

您可以看到字节代码完全相同。

do / while非常相似,但区别在于它不检查第一次迭代。如果你总是想要至少循环一次do / while是正确的循环使用,不是因为它更快,而是因为它更清晰。