Это зависит.Теоретически, учитывая достаточно наивный компилятор, ++x
вполне может быть более эффективным, чем x += 1
.
Однако я не знаю такого наивного компилятора.
- если значение операнда известно во время компиляции, то компилятор может оптимизировать операцию.
- если можно определить, что значение является постоянным во время выполнения, то JIT-компилятор также может оптимизировать операцию.
Более того, современные процессоры представляют собой очень сложные звери, которые могут выполнять множество операций параллельно, и довольно часто «простые» операции, подобные этим, могут быть полностью скрыты, если их запускать параллельно с большимиболее сложные.
Хорошее эмпирическое правило, когда вы оптимизируете и просто пишете в целом, должны выражать свои намерения настолько четко, насколько это возможно .
Это делает егодругим программистам легче читать ваш код, но это также облегчает компилятору это.
Если вы хотите увеличить значение, используйте приращениеоператор (++
), потому что он точно описывает, что вы хотите сделать.
Если вы хотите добавить переменную или неизвестное значение, используйте оператор +=
, потому что именно для этого.
Если вы четко понимаете свои намерения, то компилятор получает больше информации о вашем коде и может оптимизировать его соответствующим образом.
Если вы напишите x += 1
, выдействительно пытаюсь сбить с толку компилятор.Вы говорите: «Используйте оператор сложения общего назначения, чтобы добавить один к x
».Затем компилятор должен выяснить: «Хорошо, вы сказали , чтобы использовать сложение общего назначения, но я вижу, что в этом нет необходимости, поэтому я просто собираюсь вместо этого увеличивать».Вы могли бы сказать это так.Теперь вместо этого вы должны полагаться на умный компилятор.