Cache the CMakeDeps Jinja2 templates #13857
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Changelog: Fix: Speed up the CMakeDeps generation
Docs: omit
develop
branch, documenting this one.The compilation of the Jinja2 templates is quite slow, and several templates needs to be compiled per dependency, so for larger projects with a lot of dependencies it can be quite slow. This is fixed by caching the templates per class instance. For a medium size project with around 80 packages and dependencies I saw an improvement from 1:10 seconds to 10 seconds with this fix, so it's quite a bit faster.
NOTE: I'm not particularly happy with the implementation itself, but any alternative implementation I can think of need all the template files to be modified. So I decided to go with this non-intrusive implementation. But I can change it if you prefer.
Fixes #13845