Какой цикл самый быстрый в J2ME? - PullRequest
0 голосов
/ 06 января 2012

В J2ME есть for, while и do-while. Какой из них самый быстрый?

Ответы [ 2 ]

8 голосов
/ 06 января 2012

Если у вас нет какой-либо информации, которая обычно недоступна, все эти циклы одинаковы с точки зрения производительности.

Избыточные циклы обычно не являются узким местом производительности.

7 голосов
/ 06 января 2012

Самое важное - использовать самый простой и понятный цикл для решения проблемы.

Я бы предположил, что 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 - это правильный цикл не потому, что он быстрее, а потому, что он чище.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...