Я читал исходный код 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
).