Флейм
GameDev.ru / Флейм / Форум / Архитектура без исключений (C++) (2 стр)

Архитектура без исключений (C++) (2 стр)

Поделиться
Страницы: 1 2 3 4 5 6 7 Следующая »
return [](){};Участникwww6 дек. 201714:18#15
beejah
Оба варианта делают одно и тоже - пробрасывают ошибку выше (вариант действий в 90% кода)
Но специально для тебя - вариант первого кода с отключенными исключениями
https://godbolt.org/g/4u6cYX
beejahПостоялецwww6 дек. 201714:25#16
return [](){};
1. ты ничего не отключил, наоборот, добавил ран-тайм проверку, если верить http://en.cppreference.com/w/cpp/language/noexcept_spec.
clang не умеет в no-exceptions?
2. return foo1() && bar1() && baz1();

Правка: 6 дек. 2017 14:31

return [](){};Участникwww6 дек. 201714:36#17
beejah
https://godbolt.org/g/KwnWBP

beejah
> 1. ты ничего не отключил, наоборот, добавил ран-тайм проверку, если верить
> http://en.cppreference.com/w/cpp/language/noexcept_spec.
Откуда ты такое решил? по твоей ссылке другое написано, и асм тоже об этом говорит.

Unlike pre-C++17 throw(), noexcept will not call std::unexpected and may or may not unwind the stack, which potentially allows the compiler to implement noexcept without the runtime overhead of throw(). As of C++17, throw() is redefined to be an exact equivalent of noexcept(true).

С no-exceptions код fun1 будет аналогичный, можешь сам проверить.

Правка: 6 дек. 2017 14:40

war_zesПостоялецwww6 дек. 201714:51#18
return [](){};
тоже нихрена в этом сайте не понял - а где описания функций? почему у меня пол кода показывает? или так и должно быть?
а самое главное- где сравнение? там же только один пример


сегодня пробовал в студии сравнивать. если в коде появляется throw - компилятор начинает создавать длиннющую vtable

beejahПостоялецwww6 дек. 201714:57#19
return [](){};
> As of C++17, throw() is redefined to be an exact equivalent of noexcept(true).
Вижу. Да тут черт ногу сломит с их стандартами, не мудрено.

> С no-exceptions код fun1 будет аналогичный, можешь сам проверить.
Я что-то пока даже не могу понять, как там получить выхлоп без линковки, лол.

+ Показать

Не, если пойнт в том и был, что такой случай теоретически возможен, и он - вот такой, то лол.

Правка: 6 дек. 2017 14:59

Panzerschrek[CN]Участникwww6 дек. 201714:59#20
В варианте с исклющениями, когда броска не происходит, код несколько быстрее выполняется, по одному условному переходу на функцию.
Но это не отменяет ущербнорсти этих самых исклющений.
return [](){};Участникwww6 дек. 201715:34#21
beejah
> Не, если пойнт в том и был, что такой случай теоретически возможен, и он - вот
> такой, то лол.
Да понятно, что это синтетика, в реале надо приложить крестоскиллы чтобы разница в перформансе вообще заметна стала.
return [](){};Участникwww6 дек. 201715:38#22
war_zes
> тоже нихрена в этом сайте не понял - а где описания функций? почему у меня пол
> кода показывает? или так и должно быть?
Значит рано еще тебе на кресты, попробуй начать c match3 на юнити.
loysoПостоялецwww6 дек. 201715:57#23
0xc0de
Сам clang и всякие там chromium/firefox собираются с -fno-exceptions.
Забить на noexcept и сменить third party библиотеки, которые на exceptions закладываются.
war_zesПостоялецwww6 дек. 201715:59#24
return [](){};
при чем тут С++?
вот не умничай...

где здесь хоть одно исключение пробрасывается?
Изображение
вот ты покажи.

Правка: 6 дек. 2017 16:01

loysoПостоялецwww6 дек. 201716:01#25
0xc0de
> Под g++ спасет :)
Дык #define _HAS_EXCEPTIONS=0
и в MSVS 2017 даже SCL фиксят чтобы компилилась в такой конфигурации.
https://docs.microsoft.com/en-us/cpp/build/reference/eh-exception… andling-model

Правка: 6 дек. 2017 16:14

war_zesПостоялецwww6 дек. 201716:17#26
Вот код с возвращением
+ Показать

Выхлоп студии (релиз сборка, предпочтение скорости)

+ Показать

заменяю на исключения (но нет обработчика)

+ Показать

получаю

+ Показать

nesПостоялецwww6 дек. 201716:32#27
return [](){};
>В асм загляни, дурачок
Где реализация этого говна, умник:
void foo2();
void bar2();
void baz2();
nesПостоялецwww6 дек. 201716:41#28
return [](){};
И какого хера у тебя func1 возвращает bool, а func2 void?
Давай приводи к единому интерфейсу и тогда кукарекай.
return [](){};Участникwww6 дек. 201716:49#29
nes
> Где реализация этого говна, умник:
В другом compilation unit
Не кукарекай
Страницы: 1 2 3 4 5 6 7 Следующая »

/ Форум / Флейм / Программирование

2001—2017 © GameDev.ru — Разработка игр