Overview
Syllabus
Intro
The steps in building C++ code
Boost includes - after the preprocessor
Unreachable (dead) code
Low hanging fruit
PIMPL - pointer to implementation
PIMPL - pros & cons
Abstract interfaces & factories
Precompiled headers - usage • supported by mainstream compilers
Unity builds - cons
Unity builds - how to maintain
Inlining annotations
Templates - argument-independent code
Templates - C++11 extern template
Templates - move functions out of headers
Templates - cost of operations
Templates - other notes
Templates - tools
Diagnostics - compilation
Diagnostics - binary bloat
Build systems
Parallel builds
Diagnosing/monitoring parallelism
Sort-of winners (in terms of speed)
Static vs dynamic linking
Dynamic linking - symbol visibility
Multiplatform symbol export annotations
Linkers - LTO and other flags
Compiler caches
Distributed builds
Hardware
Physical design
Dependency analysis
Modules - history
Modules - motivation
Modules - VS 2017 example
Modules - how they work
Modules - a parallelization case study
Taught by
NDC Conferences