В циклах это имеет значение? - PullRequest
2 голосов
/ 07 февраля 2010

A

while( x < 100 ) {
if( x == 1 ) { echo "Hello World!" } else { echo "Bottles" }
x++;
}

B

while( x < 100 ) {
if( x != 1 ) { echo "Bottles" } else { echo "Hello World!"}
x++;
}

Разве это действительно имеет значение, когда такой большой цикл?

Ответы [ 5 ]

2 голосов
/ 07 февраля 2010

Вы вряд ли заметите какую-либо разницу, и почти наверняка есть большие узкие места, о которых стоит беспокоиться.

2 голосов
/ 07 февраля 2010

Это, вероятно, не будет иметь значения.

Я бы пошел со вторым, так как x != 1 чаще, чем x == 1

Это, вероятно, приводит к увеличению производительности в супер-крошечные тысячные доли секунды, но микрооптимизация не так важна.

1 голос
/ 07 февраля 2010

На типичных процессорах B, вероятно, будет быстрее, так как предсказание ветвления, вероятно, будет испорчено для A. Если, конечно, компилятор не оптимизирует.

Кстати, вы измерили это и обнаружили, что один из них значительно лучше другого?

0 голосов
/ 07 февраля 2010

Зависит от того, как ваш оптимизатор поступит с вашим циклом.

0 голосов
/ 07 февраля 2010

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

echo "Hello, World!";
while(x < 99) { echo "bottles"; x++; }

Зачем беспокоиться об условном, вы знаете, что вам придется это сделать?

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