Этот вопрос касается не оптимизации кода, а технического вопроса о разнице в производительности логических операторов короткого замыкания и обычных логических операторов, которые могут сводиться к тому, как они выполняются на аппаратном уровне.
В основном логические AND
и OR
занимают один цикл, тогда как оценка короткого замыкания использует ветвление и может занимать различное количество циклов. Теперь я знаю, что предсказатели ветвлений могут сделать эту оценку эффективной, но я не понимаю, как это быстрее, чем 1 цикл?
Да, если правый операнд является чем-то дорогим, то попытка не оценивать его выгодна. но для простых условий, таких как X & (Y | Z)
, предполагая, что это атомарные переменные, логические операторы без короткого замыкания, вероятно, будут работать быстрее. Я прав?
Я предположил, что логические операторы короткого замыкания используют ветвление (нет официального источника, просто мысль), потому что как еще вы можете совершать эти переходы при выполнении инструкций по порядку?
&&
фактически реализовано без короткого замыкания. - person harold   schedule 26.12.2017