Вы можете разделить внутренний цикл на 2 отдельных цикла for
, чтобы уменьшить количество тестов:
for (i = 0; i < N; i++) {
for (j = 0; j < i; j++) {
... some code
}
/* here we have j == i, skip this one */
j++;
for (; j < N; j++) {
... same code
}
}
В результате получается больше кода, но вдвое меньше тестов на j
.Однако обратите внимание, что если N
является константой, компилятор может более эффективно развернуть исходный внутренний цикл.Тщательный бенчмаркинг - единственный способ определить, стоит ли это решение усилий для вашей проблемы, компилятора и архитектуры.
Для полноты код можно упростить следующим образом:
for (i = 0; i < N; i++) {
for (j = 0; j < i; j++) {
... some code
}
/* here we have j == i, skip this one */
while (++j < N) {
... same code
}
}