mosra / magnum

Lightweight and modular C++11 graphics middleware for games and data visualization
https://magnum.graphics/
Other
4.81k stars 440 forks source link

Compilation time, CI time and executable size improvements #293

Open mosra opened 6 years ago

mosra commented 6 years ago

For the 2018.1d release (and onwards) I'd like to focus on reducing the header and executable size, together with improving compile time (and, as a side effect, runtime performance). This was last done in 2013 (see the blog article) and while current workflow enforces enough rules to prevent worsening of this problem, it's not actively improving it either.

The ultimate goal is being able to ship useful utilities as "single-header" libraries without being laughed at for compile times and having compile times competitive with C header-only libs, yet staying in C++. Which, of course, means much better compile times than other C++ projects (json.hpp and Eigen, I'm looking at you).

Compile time improvements

Executable size reduction / perf improvements (mainly WebAssembly-focused)

Bigger tasks

CI speedup

Long-term

Further work

Further read / references:

mosra commented 5 years ago

Progress!

mosra commented 5 years ago

More progress:

See above for the actual commit references.