Я читал исходный код Java ArrayList и замечал некоторые сравнения в if-statement.
В Java 7 метод grow(int) использует
if (newCapacity - minCapacity < 0)
newCapacity = minCapacity;
В Java 6, grow не существовало. Однако метод ensureCapacity(int) использует
if (newCapacity < minCapacity)
newCapacity = minCapacity;
В чем причина изменения? Это проблема производительности или просто стиль?
Я мог представить себе, что сравнение с нолем происходит быстрее, но выполнение полного вычитания просто для проверки того, кажется ли это негативным для меня немного излишним. Также в терминах байт-кода это будет включать две команды (ISUB и IF_ICMPGE) вместо одного (IFGE).