Следует ли использовать `if ($ a! = NULL)` или `if ($ a! == NULL)` для управления потоком программы? - PullRequest
5 голосов
/ 17 января 2012

Возможно, это очень болезненный вопрос, но мне интересно узнать о проблемах производительности, связанных с использованием PHP , если он идентичен !== против , если равен != для управления потоком..

Рассмотрим следующую тривиальную функцию PHP:

<?php
 function test_json($json = NULL) {
  if ($json != NULL) {
   echo 'You passed some JSON.';
  } else {
   echo 'You failed to pass any JSON.';
  }
 }
?>

С точки зрения производительности, предпочтительно использовать , если идентично (!==) для предотвращения итерации PHPчерез типы переменных, пытаясь найти правильное сравнение?

I предположим , что !== first сравнивает типы переменных, и если это не удается, он немедленно возвращает FALSE?Я использовал != с PHP3 почти как рефлекс.Теперь, когда я работаю над гораздо более сложными в вычислительном отношении проектами, соображения по поводу малой производительности становятся предметом большей озабоченности.

Другие комментарии по оптимизации управления потоками, конечно, приветствуются!

Ответы [ 2 ]

7 голосов
/ 17 января 2012

Я не проводил никаких тестов производительности на свободных и строгих операторах сравнения, но вместо того, что вы пытаетесь сделать, я бы вместо этого рекомендовал что-то вроде

if (!is_null($json)) {
    do_stuff()
}

Подробнее о is_null() в http://www.php.net/manual/en/function.is-null.php

РЕДАКТИРОВАТЬ: примечание в комментариях к php-странице, на которую я ссылался выше, имеет некоторые результаты, показывающие, что оператор === немного быстрее, чем оператор ==, оба из которых быстрее, чем is_null().Тем не менее, в другом примечании отмечается, что «Разница во времени выполнения между === NULL и is_null составляет менее 250 наносекунд. Оптимизируйте то, что имеет значение».Я должен был бы согласиться там.Поэтому, несмотря на все сказанное, я бы посоветовал вам использовать то, что вы считаете наиболее читабельным.

0 голосов
/ 17 января 2012

Вы можете написать такой тестовый код, прежде чем спрашивать;согласно тесту "Использование" === "в 30 раз быстрее, чем is_null ()."

http://www.php.net/manual/en/language.types.null.php#77937

...