Здравствуйте, Ops, Вы писали:
Ops>Здравствуйте, Vain, Вы писали:
V>>Чтобы нормально ловить и обрабатывать исключения приходится их перебрасывать (т.н. трюк с rethrow) либо в макросе (чтобы гарантировать что макрос вставили в конце цепочки catch'ей) либо в функции (для эстетов, но также с переброской). Это приводит к "испарению" преимущества по производительности исключений по сравнению с кодами возвратов. V>>А теперь расскажи нам какой компилятор сможет перебрасывать исключения без потери производительности? Ops>Уж сколько раз твердили миру... Исключения — они вылетают в _исключительных_ ситуациях, которые случаются _редко_. И в этом случае мы имеем высокую производительность пока их не происходит. Если же их использовать как goto, то конечно, про производительность можно забыть. Ops>Ну вот есть функция, которая возвращает да/нет, и в зависимости от результата идет ветвление. Глупо было бы это делать на исключениях. А вот если по какой-то причине (нехватка ресурсов, поврежденные данные, и т.п.) она не может вернуть корректный результат, то можно и бросить.
goto выполняется 0 тактов
так же как и условный переход, если он правильно предсказан.