2011-01-11 4 views
0
  1. Какой из них быстрее в Java?Который быстрее в java

    a. for(int i = 100000; i > 0; i--) {}

    b. for(int i = 1; i < 100001; i++) {}

  2. Какой из них быстрее в Java?

    a. Math.max(a,b);

    b. (a>b)?a:b

+8

домашнее задание много? ... –

+1

Я бы предположил, что разница будет незначительной и будет отличаться от окружающей среды к окружающей среде. –

+5

Первые два принимают одинаковое количество времени - 0 - используя мой java-компилятор. –

ответ

15

Если вы хотите знать, что происходит быстрее, time it.

Если вы хотите знать, почему что-то быстрее, это другое совсем.

+0

более умные слова редко говорят :) –

+1

Достаточно ли в нетривиальных случаях, но вы должны спросить себя, выполняете ли вы эти операции достаточно часто, чтобы незначительные различия между ними складывались? Имеет ли значение, если одна операция на 1 нс быстрее другой? –

3

Запустите их обоих и проверьте их. Разница будет очень маленькой и, возможно, различной для каждой среды.

0

В этих случаях он просто не имеет значения. Все эти операции будут иметь такое незначительное время работы по сравнению с накладными расходами VM и GC, что вы не сэкономите больше нескольких циклов. Даже если разница между двумя, скажем, 1000 циклов, вы все еще говорите о разнице в 1 микросекунду на 1 ГГц процессоре. Это просто неважно

1

Проверьте оба ответа и наберите время. Я сомневаюсь, что будет какая-то значительная разница.

3

Следует помнить, что JVM может скомпилировать код, который ничего не делает до нуля, что делает разницу в том, как и когда JVM оптимизирует код, а не какой код лучше.

Реальный вопрос, который вы должны задать себе; Почему код понятнее? Это то, что вы должны использовать.

Смежные вопросы