если оптимизация условия оператора - PullRequest
5 голосов
/ 29 августа 2008

У меня есть оператор if с двумя условиями (разделенными оператором ИЛИ), одно из условий покрывает + 70% ситуаций и занимает гораздо меньше времени для обработки / выполнения, чем второе условие, поэтому в интересах скорости I хотите, чтобы второе условие было обработано, только если первое условие имеет значение false.

если я упорядочу условия так, чтобы первое условие (более быстрое) появилось в операторе if первым - в тех случаях, когда это условие выполняется и оценивается как истинное, вообще обрабатывается второе условие?

if ( (condition1) | (condition2) ){
  // do this
}

или мне нужно вложить два оператора if, чтобы проверять только второе условие, если первое оценивается как ложное?

if (condition1){
  // do this
}else if (condition2){
  // do this
}

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

Ответы [ 11 ]

0 голосов
/ 29 августа 2008

Так как это помечено как независимый от языка, я включу его. По крайней мере, для Perl достаточно первого варианта, я не знаком с PHP. Он оценивает слева направо и выпадает, как только условие выполнено.

...