astutils.h: reserve `std::vector` space in `visitAstNodes()` to avoid excess allocations (#4158)
This commit is contained in:
parent
00abf21d40
commit
cc08a661e6
|
@ -53,7 +53,11 @@ void visitAstNodes(T *ast, const TFunc &visitor)
|
||||||
if (!ast)
|
if (!ast)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
std::stack<T *, std::vector<T *>> tokens;
|
std::vector<T *> tokensContainer;
|
||||||
|
// the size of 8 was determined in tests to be sufficient to avoid excess allocations. also add 1 as a buffer.
|
||||||
|
// we might need to increase that value in the future.
|
||||||
|
tokensContainer.reserve(8 + 1);
|
||||||
|
std::stack<T *, std::vector<T *>> tokens(std::move(tokensContainer));
|
||||||
T *tok = ast;
|
T *tok = ast;
|
||||||
do {
|
do {
|
||||||
ChildrenToVisit c = visitor(tok);
|
ChildrenToVisit c = visitor(tok);
|
||||||
|
|
Loading…
Reference in New Issue