В php быстрее запускать булеву проверку или просто == 1 / == 0 - PullRequest
0 голосов
/ 21 февраля 2012

Быстрее ли в php проверять логическое значение, например,

 if($var)

или

 if($var == 1)

и

 if(!$var) 

или

 if($var == 1)

var может быть только 1 или 0.

Ответы [ 3 ]

1 голос
/ 21 февраля 2012

Я ожидал, что прямая оценка истинности переменной будет быстрее, чем проверка, если две переменные равны.Мои тесты показывают, что это так.Можно ожидать, что при вычислении оператора == будет более высокий уровень косвенности (это вызов дополнительной функции, которая возвращает значение истинности?), И, следовательно, он добавляет очень незначительные накладные расходы.

Некоторые люди считают, что это преждевременная микрооптимизация.Лично я не думаю, что это потому, что

  1. Лично я предпочитаю читать if ($var) {}, чем if ($var == 1) {}

  2. Это занимает оченьбазовое понимание языка, чтобы знать, что любое истинное (эквивалентное истинному) значение может быть оценено внутри оператора if

  3. В некотором смысле это может повысить осведомленность о том, как работает оператор if (что угодноэто не одобряет if ($var == true) {}, если, конечно, полезно только дробное число)лучший вариант.По крайней мере, так мне кажется, учитывая мои личные предпочтения.

0 голосов
/ 21 февраля 2012

Проверить этот сайт:

http://www.phpbench.com/

0 голосов
/ 21 февраля 2012

if ($ var) быстрее. Вы можете проверить эту ссылку http://hbfs.wordpress.com/2008/08/26/optimizing-boolean-expressions-for-speed/ для более подробного объяснения.

...