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