Повысить обработку исключений - PullRequest
4 голосов
/ 29 декабря 2010

Я рассматриваю возможность использования обработки исключений в моем приложении. Основным преимуществом применения расширенной обработки исключений является возможность добавления метаданных к исключениям. Это может облегчить отладку и позволить распространению дополнительной информации вверх, поскольку стек исключений разматывается. Однако я не совсем понимаю, как это повлияет на производительность. Как реализована расширенная обработка исключений - хранятся ли объекты error_info внутри карты (с вставкой log (n) при каждой вставке)! Любые известные недостатки обработки исключений в Boost!

Ответы [ 2 ]

4 голосов
/ 29 декабря 2010

Как вы уже упоминали, насколько я вижу, следующая нагрузка сопровождает для оператора <<. </p>

  • new error_info для инициализации shared_ptr< error_info >

  • new exception_detail::error_info_container_impl для инициализации intrusive_ptr< exception_detail::error_info_container>

  • operator[] для вставки их в std::map< typeinfo, shared_ptr<error_info_base const> >

Я не могу сказать, имеют ли значение эти нагрузки в вашей ситуации. Если вы обеспокоены, было бы лучше измерить нагрузку в фактическом окружающая среда.

0 голосов
/ 21 июня 2012

Да, информация об ошибках хранится на карте.Стоимость вставки error_info незначительна как с точки зрения скорости (перебрасывание и разматывание стека, вероятно, намного медленнее), так и пространства (вся память освобождается в конце перехвата, как правило, вскоре после освобождения всей остальной памяти при разматывании стека)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...