Reduce inclusion for <queue>
and <stack>
#4707
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.
Towards #3599.
Test options
cl /nologo /Bt /Zs /TP /w repro.cpp /std:c++14 /permissive- repro.cpp
cl /nologo /Bt /Zs /TP /w repro.cpp /std:c++17 /permissive- repro.cpp
cl /nologo /Bt /Zs /TP /w repro.cpp /std:c++20 /permissive- repro.cpp
cl /nologo /Bt /Zs /TP /w repro.cpp /std:c++latest /permissive- repro.cpp
Test programs
Results
On my old laptop, the changes reduced the consumed time
<queue>
, from ~1.08s to ~0.57s in C++23 mode;<queue>
, from ~0.62s to ~0.49s in C++20 mode;<queue>
, from ~0.43s to ~0.37s in C++17 mode;<queue>
, from ~0.37s to ~0.33s in C++14 mode;<stack>
, from ~0.77s to ~0.51s in C++23 mode.<stack>
in older modes.Notes
Escape hatch
_LEGACY_CODE_ASSUMES_QUEUE_INCLUDES_ALGORITHM
can be used to restore the inclusion of<algorithm>
.MSVC-internal changes are needed due to the new internal headers.