Boosty: https://boosty.to/polevoydmitry
TG: https://t.me/polevoydmitry
В этом видео мы поговорим о том, как компилятор оптимизирует код в C++ с помощью:
- RVO (Return Value Optimization)
- NRVO (Named Return Value Optimization)
- Copy elision
- Temporary materialization
Зачем нам это знать?
1. Чтобы не удивляться, почему стек вызовов в нашей программе выглядит не так, как мы его написали.
2. Понимая, при каких условиях компилятор делает оптимизации, мы не будем «улучшать» код, делая его на самом деле медленнее и неэффективнее.
Так что – приятного просмотра!
00:00 - Начало
00:48 - Зачем нам это знать
01:47 - Пример с флагом `-fno-elide-constructors`
04:42 - Copy Elision и RVO на практике
05:40 - до C++17 и после
08:20 - NRVO и его ограничения
10:41 - Как `std::move` ломает оптимизации
13:33 - Закрепляем знания
14:20 - Temporary Materialization и категории значений
18:52 - Заключение