PHP - есть ли преимущество в скорости для использования!вместо пустого ()? - PullRequest
0 голосов
/ 24 января 2019

это!оператор быстрее, чем пустой ()?

Тестирование!оператор:

    $start_ts = microtime(true);
    $someVar = true;
    $_10M = 10000000;
    for($i = 0; $i < $_10M; $i++) {
        if(!$someVar) {

        }
    }
    $end_ts = microtime(true);
    die(var_dump($end_ts - $start_ts));

Тестирование пусто ():

    $start_ts = microtime(true);
    $someVar = true;
    $_10M = 10000000;
    for($i = 0; $i < $_10M; $i++) {
        if(empty($someVar)) {

        }
    }
    $end_ts = microtime(true);
    die(var_dump($end_ts - $start_ts));

Обе они занимают около 1,3 секунды.

Почему вызов функции не медленнее, чем использование!оператор?Разве нет затрат на вызов empty ()?

Я думал, что вызов empty () будет медленнее, но, похоже, это не так.

1 Ответ

0 голосов
/ 24 января 2019
  1. Это не имеет значения.
  2. Неважно.
  3. empty - это не функция, это языковая конструкция . Это больше похоже на оператора.
  4. Напишите, что вы имеете в виду. Важное различие между ! и empty состоит в том, что с empty это ожидаемо и нормально , если переменная вообще не существует, По сути, это отключает отчеты об ошибках и затрудняет поиск проблем, если вы опечатали имя переменной. Используйте empty только в том случае, если на законных основаниях ожидается, что значение может вообще не существовать.
  5. что-то что-то разное кэширует разогрев ускорения кашель * кашель .
  6. Неважно.

Значение: На практике вам никогда не следует беспокоиться о (едва существующей, см. 3.) разнице, поскольку она не является каким-либо важным критерием для чего-либо (см. 4.). Если вы действительно хотите знать, покопайтесь в исходном коде языка Си. Но это не знание, которое в любом случае относится к любому, кто пишет код PHP.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...