Size: a a a

2020 July 29

m

magras in pro.cxx
Андрей Руссков
там в докладе было перечислено как минимум несколько сценариев где ломаются оптимизации
Да, но в докладе фактически сравнивались исключения и отсутствие какой либо обработки ошибок. Естественно исключения дизейблят некоторые оптимизации. Но остальные механизмы обработки ошибок тоже задизейблят многие из приведенных оптимизаций.
источник

АР

Андрей Руссков... in pro.cxx
magras
О_о
У меня они прекрасно инлайнятся.
ну когда в функции второй landing pad она тупо больше по размеру и реже инлайнится
источник

DP

Denis Paukaev in pro.cxx
magras
Да, но в докладе фактически сравнивались исключения и отсутствие какой либо обработки ошибок. Естественно исключения дизейблят некоторые оптимизации. Но остальные механизмы обработки ошибок тоже задизейблят многие из приведенных оптимизаций.
вряд ли возврат кода ошибки должен дизейблить какие-то оптимизации, в противном случае возврат обычного инта тоже должен, что было бы странно
источник

АР

Андрей Руссков... in pro.cxx
Denis Paukaev
а есть по вашему вариант где уже сейчас хорошо?
Rust? )
источник

DP

Denis Paukaev in pro.cxx
паттерн матчинг то?
источник

AD

Apache DOG™ in pro.cxx
Denis Paukaev
а есть по вашему вариант где уже сейчас хорошо?
дотти F[Err1 | ... | ErrN, T], вот при том что тебе чтобы вытереть левое, надо ошибку похендлить
источник

АР

Андрей Руссков... in pro.cxx
еще, например, кидающие функции никогда не являются чистыми
источник

VK

Valentin Kornienko in pro.cxx
/rust
источник

m

magras in pro.cxx
Андрей Руссков
ну когда в функции второй landing pad она тупо больше по размеру и реже инлайнится
Так этот landing pad это код обработки ошибки. Куда он денется при использовании кодов возврата? Он точно так же будет в той же функции.
источник

AD

Apache DOG™ in pro.cxx
но оптимизациями там и не пахнет
источник

АР

Андрей Руссков... in pro.cxx
magras
Так этот landing pad это код обработки ошибки. Куда он денется при использовании кодов возврата? Он точно так же будет в той же функции.
так там через весь стек landing pad'ы должны быть
источник

АР

Андрей Руссков... in pro.cxx
даже банальный

try {
   throw 1;
} catch (int) {
   return 0;
}

не заоптимизируется
источник

m

magras in pro.cxx
Андрей Руссков
так там через весь стек landing pad'ы должны быть
Только там где нужно вызывать деструкторы автоматических объектов.
источник

АР

Андрей Руссков... in pro.cxx
ну его и так и так надо вызывать, просто с исключениями эти вызовы деструкторов могут дублироваться
источник

АР

Андрей Руссков... in pro.cxx
в рамках одной функции
источник

DP

Denis Paukaev in pro.cxx
Apache DOG™
дотти F[Err1 | ... | ErrN, T], вот при том что тебе чтобы вытереть левое, надо ошибку похендлить
это не rust вариант разве?
источник

AD

Apache DOG™ in pro.cxx
Denis Paukaev
это не rust вариант разве?
ну немного не совсем, там нет хкт
источник

AD

Apache DOG™ in pro.cxx
да и быть ему там проблематично
источник

m

magras in pro.cxx
Андрей Руссков
даже банальный

try {
   throw 1;
} catch (int) {
   return 0;
}

не заоптимизируется
хм. И в правду. Я несколько удивлен.
источник

m

magras in pro.cxx
Андрей Руссков
ну его и так и так надо вызывать, просто с исключениями эти вызовы деструкторов могут дублироваться
Это правда, бинарники раздуваются, но это должно иметь минимальное влияние на производительность. Мне кажется, что засорение кеша инструкций должно оказывать большее влияние на производительность.
источник