Skip leading trivia generation if empty in BuildableNodes #639
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.
Although we discussed this earlier, I would like to revisit the optimization to skip leading trivia generation on buildable nodes in
SwiftSyntaxBuilder
when empty, since it actually does have a noticeable performance impact ongenerate-swift-syntax-builder
: The optimization cuts down generation time from ~13 seconds to ~7 seconds on my machine, nearly a 50% improvement in performance! Profiling the executable with Instruments reveals that this indeed seems to be the issue, the heaviest stack trace points towithLeadingTrivia
.The improvement in performance with this patch becomes especially noticeable during development of generated files where shorter feedback cycles greatly improve the workflow.
(This change should be mostly orthogonal to the upcoming formatting-related changes)