Вложено ли, если условия хороши для исполнения? - PullRequest
0 голосов
/ 21 декабря 2011

Я использую одну и ту же страницу php для разных операций.Итак, если я делаю какие-то действия

Какой из них показывает хорошую производительность?

This one
    if($catid){ .. some action }

    if($sub_catid){ .. some action }

    if($sub_sub_catid){ .. some action }

ИЛИ Этот


    if($catid){ 
        .. some action 
    }else{    
        if($sub_catid){ 
            .. some action 
        }else{    
            if($sub_sub_catid){
                .. some action
            }
        }
    }

Ответы [ 3 ]

4 голосов
/ 21 декабря 2011

Во-первых, эти два имеют очень разные значения. Первый может позволить каждому отдельному оператору выполняться, если все эти переменные имеют значение ИСТИНА. Второй «замкнет» при первом обнаружении чего-либо ИСТИНА.

Я думаю, что вы ищете:

if($catid) { 
    .. some action 
} else if($sub_catid) { 
    .. some action 
} else if($sub_sub_catid) {
    .. some action
}

Бонусные баллы: более читабельно!

1 голос
/ 21 декабря 2011

Оба имеют хорошую производительность.Проверка простой переменной if выполняется очень быстро.Теоретически второе быстрее, но вы вряд ли сможете измерить разницу.

Семантически, однако, они не одинаковы.Если заданы как $ catid, так и $ subcatid, в первой ситуации выполняется как первое, так и второе действие, тогда как во второй ситуации выполняется только первое действие.

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

0 голосов
/ 21 декабря 2011

если ваши условия не могут быть верными одновременно лучший способ - использовать оператор switch

switch($mycondition){

case 'category':
//Category statement here
break;

case 'sub_category':
//Another Statement here
break;

default:
//Other  cases

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