Aroused
@Aroused

Что быстрее операторы или условия?

$a = 0;
if ($a < 1) ++$a;
// или
$a < 1 && ++$a;

Разумеется, пример упрощен.
  • Вопрос задан
  • 283 просмотра
Решения вопроса 1
xDireX
@xDireX
$start = microtime(true);
for($i=0;$i<10000;$i++){
	$a = 0;
	if ($a < 1) ++$a;
}

$time = microtime(true) - $start;
printf('Time %.4F s.', $time);

$start = microtime(true);

for($i=0;$i<10000;$i++){
	$a < 1 && ++$a;
}
$time = microtime(true) - $start;
printf('Time %.4F s.', $time);


Вариант 1: Time 0.0008 s.
Вариант 2: Time 0.0010 s
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@newpy
web-dev
Ставьте правильно вопрос, т.к. в вашем примере вопрос скорости не уместен вообще. Вопрос читаемости (читаемость выше с if) и отсутствия понимания того, что происходит. В вашем примере два разных случая. В первом вы проверяете условие, и если оно выполняется, то происходит инкремент. Во втором же, вы проверяете двойное условие, первое - if a < 1, второе - результат выполнения операции инкремента. И если оба они выполнятся, то ничего не произойдет, потому что нет блока, отвечающего за выполнение кода, если двойное условие выполнится.

А про скорость забудьте, если у вас там не миллионы инкрементов и смотря что происходит с $a (поскольку ваш пример, как вы говорите, упрощен). Тогда вообще лучше использовать генераторы и yield. Вы не там пытаетесь скорость выжать. Узкие места программ это не if и &&. Или приводите полный пример, а не абстрактный, да еще неправильный.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы