Что является более эффективным: двоичный и / или логический && - PullRequest
0 голосов
/ 20 марта 2012

Когда все значения логические, бинарный & не работает с большим количеством битов, чем логический &&?

Например,

if ( foo == "Yes" & 2 != 0 & 6 )

или

if ( foo == "Yes" && 2 != 0 && 6 )

(если подумать о PHP, но подойдет любой язык)

Ответы [ 3 ]

4 голосов
/ 20 марта 2012

Сколько битов он использует, не имеет значения: процессор может сделать это в одной инструкции в любом случае (обычно).Принципиальным отличием является способность быстрого доступа &&, поэтому для всего, что справа, нетривиально оценить его быстрее - при условии, что язык, в котором && работает таким же образом, как C или Java.(И, очевидно, PHP, хотя я знаю немного об этом, чтобы быть уверенным.)

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

0 голосов
/ 21 марта 2012

Лучше использовать &&, если && логично, и использовать &, когда & логично, поэтому эти операторы предназначены для.Не оптимизируйте преждевременно, потому что:

  1. Скорость вашего приложения может быть хорошей без оптимизации

  2. Вы можете оптимизировать часть своего приложенияи выиграет неуместное количество увеличения скорости

  3. Ваш код будет более сложным и будет трудно работать на более поздних версиях

  4. Еслиу вас есть проблема со скоростью, это, вероятно, не будет связано с идеей

  5. Программирование само по себе иногда довольно сложно, и этот вид взлома сделает ваш код нечитаемым, ваши товарищи по команде не будутпонять ваш код, и общая эффективность вашей команды будет снижена из-за некрасивых кодов, написанных вами

0 голосов
/ 20 марта 2012

Это зависит от логики вашего кода.

...