Будет ли компилятор оптимизировать выход из внутреннего цикла?C++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Будет ли компилятор оптимизировать выход из внутреннего цикла?

Сообщение Anonymous »

У меня код выглядит следующим образом (показаны все варианты использования Done):

Код: Выделить всё

bool done = false;
for(int i = 0; i < big; i++)
{
...
for(int j = 0; j < wow; j++)
{
...
if(foo(i,j))
{
done = true;
break;
}
...
}
if(done) break;
...
}
преобразуют ли его компиляторы в это:

Код: Выделить всё

for(int i = 0; i < big; i++)
{
...
for(int j = 0; j < wow; j++)
{
...
if(foo(i,j))
goto __done; // same as a labeled break if we had it
...
}
...
}
__done:;
Примечание: Хотя меня больше всего интересует, будет ли if(done)break; обойден и удален как мертвый код , меня также интересует, будет ли оно удалено и сделано вообще.

Подробнее здесь: https://stackoverflow.com/questions/305 ... inner-loop
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»