Предполагая, что существует стоимость, связанная с настройкой точки восстановления, можно оптимизировать цикл следующим образом:
while (doContinue) {
try {
doSomeWork ();
}
catch (...) {}
}
В чем-то вроде этого:
while (doContinue) {
try {
do {
doSomeWork ();
} while (doContinue);
break;
} catch (...) {}
}
Но если платформа поддерживает обработку исключений с нулевой стоимостью, эта оптимизация не имеет никакого смысла.
Может ли кто-нибудь указать мне, как обработка исключений с нулевой стоимостью реализована на разных архитектурах, и есть ли способ понять, какие базовые механизмы доступны для генератора компилятора/кода, чтобы решить во время компиляции, оптимизировать ли это это или нет. И может ли компилятор, например, оптимизировать его для вас, если он может предположить, что doSomeWork ()
не имеет побочных эффектов, связанных с циклом?