Я не уверен, что продуктивно беспокоиться об оптимизации на этом уровне. Как правило, важнее заставить программу работать и перейти к следующей проблеме.
При этом существует оптимизация под названием отключение цикла, что некоторые компиляторы сделают за вас. Они дублируют цикл, один раз с условным оператором и один раз без него, и перемещают условный оператор наружу, чтобы выбрать цикл. (В вашем примере вы можете сделать весь цикл условным, но я предполагаю, что это просто артефакт упрощения для переполнения стека.)
Но это еще одна причина не слишком беспокоиться об оптимизации, по крайней мере, до тех пор, пока у вас нет профиля и вы не знаете, что эта область кода отвечает за обнаруживаемое количество времени выполнения.
Тем не менее, лучше всего писать код как можно чище, и разгадывание таких проблем научит вас хорошим вещам...
На самом деле меня тоже беспокоят условные операторы, не зависящие от циклов. Я не верю, что есть общий ответ. Есть причудливые ответы, включающие функции более высокого порядка или лямбда-выражения, ответы «оставить это компилятору», ответы на рефакторинг всей внешней рутины ... Я в целом одобряю все, что делает код меньше. Вы должны расставить приоритеты, чтобы различать...
person
DigitalRoss
schedule
15.11.2009