Ориентируясь на Visual C++, сталкивались ли вы когда-нибудь со значительным приростом производительности в коде C++ с помощью throw()
(т.е.__declspec(nothrow)
) Спецификация без выбрасывания?
Действительно ли это помогает оптимизатору?
Есть ли тесты, показывающие прирост производительности?
Я нашел другой (противоположный) совет в Интернете:
Обоснование спецификации исключений Boostпротивthrow()
, вместо этого Ларри Остерман кажется в пользуоб этом в своем блоге: Зачем добавлять throw() к вашим методам?
(Я хотел бы пояснить, что меня интересует конкретный код VC++; я знаю, что в GCC спецификация throw()
на самом деле может быть "пессимизацией" из-за к проверкам во время выполнения.)
PS Читая заголовки ATL, я обнаружил, что throw()
используется повсеместно; более того, я нашел удобный класс C++ RAII unique_handle
в этой статье MSDN, который также использует спецификацию throw()
.