Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Solving #109 with redundant inclusion guards #110

Draft
wants to merge 19 commits into
base: main
Choose a base branch
from

Conversation

jmramosr
Copy link

Using redundant include guards to minimize the compilation time

C Preprocessor inclusions could explode the compilation time (even with pragma once!)

The basic idea comes from an old, dusty C++ book called Large Scale C++ Software Design, page 83-88.

Expanding the evaluate method indicated in the issue #109, everytime the ? in 0?1?2?3?4?5?6?7?8?9? is parsed, a new template instantiation begins, reading all the files again in the #includes, and increasing exponentially the compilation time.

I didn't use any redundant include guards in the standard header files. They could be used into them, too, in order to reduce even more the compilation times.

Test case:
0?1?2?3?4?5?6?7?8?9?
Even worst compile time test case:
a?b?c?d?e?f?g?h?i?j?l?m?n?o?p?q?r?s?t?u?v?w?x?y?z?

To reduce compilation time explodes in ctre.hpp
  To reduce compilation time explodes
To reduce compilation time explodes
To reduce compilation time explodes
added CTRE_V2__CTLL__HPP redundant guard
To reduce compilation time explodes
To reduce compilation time explodes
To reduce compilation time explodes
To reduce compilation time explodes
To reduce compilation time explodes
To reduce compilation time explodes
To reduce compilation time explodes
To reduce compilation time explodes
To reduce compilation time explodes
To reduce compilation time explodes
To reduce compilation time explodes
@hanickadot
Copy link
Owner

Do you have some measurements? This seems really sketchy.

@hanickadot
Copy link
Owner

Ok, I read the book on pages you sent, the chapter is talking about preprocessor, not about templates.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants