哪个循环在J2ME中最快?

phe*_*mix -1 java java-me

还有的for,while并且do-while在J2ME.哪个是最快的?

Rob*_*anu 8

除非您有某种通常不可用的信息,否则这些循环在性能方面都是相同的.

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

  • 为了挑剔,循环*开销*不是性能瓶颈.循环本身通常是*性能瓶颈(这就是为什么我们使用大O表示法来分析时间复杂度),但正如你所说,使用不同类型的循环不会改变它. (3认同)

Pet*_*rey 7

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

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

如果你比较字节码

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

    }

    int i = 0;
    while (i < 10) {
        i++;
    }
}
Run Code Online (Sandbox Code Playgroud)

是的

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 
Run Code Online (Sandbox Code Playgroud)

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

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