Как происходит проверка оператора if в памяти? - PullRequest
0 голосов
/ 14 ноября 2011

Пожалуйста, прочитайте код ниже:

<?php
    $flag = 1;
    $name = $_GET['name'];
    if($name == NULL){
       $flag = 0;
    }

 // some more code and checking....
 ?>

Здесь в большинстве случаев параметр name не будет иметь значение NULL. Если это ноль, я устанавливаю флаг ошибки в 0. Мне сказали, что мы должны использовать позитивный подход в программировании. То есть, поскольку в большинстве случаев параметр name не будет иметь значение NULL, я должен написать приведенный выше код в виде:

if($name != NULL){
  $flag=1;
}else{
  $flag =0;
}

Приведенный выше код повышает производительность благодаря тому, что работает проверка оператора 'if' ($ name == NULL и $ name! = NULL). (Это то, что было сказано)

Этот позитивный подход помогает улучшить производительность? Как оператор if проверяет условие if в памяти?

Заранее спасибо.

Ответы [ 4 ]

2 голосов
/ 14 ноября 2011

Для таких простых заявлений я не буду заботиться о производительности и использую те, которые более читабельны / удобны в обслуживании.

Это простые распределения и сравнения довольно дешевы. Если вы работаете с базой данных и т. Д., Возможная разница в производительности и памяти здесь не имеет смысла.

0 голосов
/ 14 ноября 2011

Если вы беспокоитесь о производительности, используйте c или c ++.

http://shootout.alioth.debian.org/u32/which-programming-languages-are-fastest.php

Обратите внимание, что PHP в 45 раз медленнее, чем c или c ++.

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

Надеюсь, это поможет ...

0 голосов
/ 14 ноября 2011

Этот позитивный подход помогает улучшить производительность?

Определенно NO.
Нет смысла, если такой микроскопический подход когда-либо повлияет на производительность. По крайней мере, в мире PHP, где ЦП должен выполнять сотни тысяч таких сравнений, пока он, наконец, не достигнет вашего единственного одиночного состояния.

Кроме того, в случае, если вам нужно установить только логический флаг, нет необходимости писать, если условие вообще - это избыточно (НЕ с точки зрения производительности, а только с точки зрения согласованности кода и здравомыслия), поскольку каждый логический оператор уже возвращает логическое значение:

$flag = ($name != NULL);

В любом случае, вещь, которая действительно заслуживает внимания, это то, что ваш код выдаст ошибку в случае, если $ _GET ['name'] не установлен.
Итак, в вашем случае кажется, что лучшим подходом будет всего одна строка кода:

$flag = isset($_GET['name']);
0 голосов
/ 14 ноября 2011

Если вы не пишете код для Facebook, ни один из этих подходов не окажет заметного влияния на производительность вашего веб-приложения.(Возможно, даже тогда это может не иметь значения.)

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