Производительность с операторами && и || - PullRequest
0 голосов
/ 30 декабря 2018

У меня простое сомнение в производительности.Когда мне нужно проверить несколько переменных, какая из этих двух опций имеет большую производительность?

return (a >= 0 && b >= 0 && c >= 0 && d >= 0);

или

return !(a < 0 || b < 0 || c < 0 || d < 0);

Я спрашиваю об этом, потому что полагаю, что ||Оператор останавливается, когда находит условие ИСТИНА, но оператор && должен сравнивать с целыми условиями.

Итак ... что лучше?

1 Ответ

0 голосов
/ 30 декабря 2018

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

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