noexcept, разматывание стека и производительность

Следующиепроект от Скотта Мейерса новая книга C ++ 11 говорит (страница 2, строки 7-21)

Разница между раскручиванием стека вызовов и, возможно, его раскруткой оказывает удивительно большое влияние на генерацию кода. В функции noexcept оптимизаторам не нужно держать стек времени выполнения в состоянии без перемотки, если исключение будет распространяться из функции, и при этом они не должны гарантировать, что объекты в функции noexcept уничтожаются в обратном порядке конструирования, если исключение покидает функцию , В результате появляется больше возможностей для оптимизации не только в теле функции noexcept, но и в тех местах, где эта функция вызывается. Такая гибкость присутствует только для не кроме функций. В функциях со спецификациями исключений throw () этого нет, как и в функциях без спецификаций исключений вообще.

В отличие от раздела5.4 из«Технический отчет о производительности C ++» описывает «кодовый» и «табличный» способы реализации обработки исключений. В частности, показано, что метод "таблица" не имеет временных затрат, когда не генерируются исключения, а имеет только служебные места.

Мой вопрос заключается в следующем: о каких оптимизациях говорит Скотт Мейерс, когда говорит о том, что раскручивать или раскручивать? Почему эти оптимизации не применяются дляthrow()? Относятся ли его комментарии только к методу «кода», упомянутому в ТР 2006 года?

Ответы на вопрос(4)

Ваш ответ на вопрос