[3.0] Improve generator performance#2567
Merged
Exanite merged 25 commits intodotnet:develop/3.0from Apr 18, 2026
Merged
Conversation
These were written before I installed the CSharpier plugin so they were not formatted.
GetTypeInfo should be unnecessary since it gets the type of an expression. For non-type expressions (eg: `5` is an int), this isn't useful for us. This is arguably an indirect reference to int, but the current Silk generator only cares about modifying direct references. For type expressions (eg: `int` refers to int), GetSymbolInfo will also return the same symbol.
*Roslyn already caches this internally. This is mainly for avoiding the async method call. Difference is probably not measurable, but theoretically this is faster.
Conflict checking was O(n), now it is O(1).
This is to prevent false negatives from mismatched path formats.
a934c2b to
878a90f
Compare
(cherry picked from commit 8cf1324)
(cherry picked from commit 2c48fb6)
(cherry picked from commit 6b12c69)
(cherry picked from commit 66d0daa)
…sync This change caused incorrect behavior since the document ids can come from projects other than the source project (namely the test project). This broken when semantic models were requested for test project documents from the source project compilation.
This was referenced Apr 17, 2026
Draft
9ab6f5b to
07e05f0
Compare
This reverts commit 364015d.
Exanite
commented
Apr 17, 2026
Member
Author
Exanite
left a comment
There was a problem hiding this comment.
Self code review complete. My review comments point out why things are changed, but the code should make sense without them.
I've also regenerated the bindings using Windows to verify that no output changes have occurred.
curin
approved these changes
Apr 18, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
Summary of the PR
This branch will be where I investigate performance improvements to the Silk 3.0 bindings generator.
Related issues, Discord discussions, or proposals
Discord thread for discussing development: https://discord.com/channels/521092042781229087/1493337581805371432
Further Comments
Tasks
Update ClangSharpNormalizeWhitespacecalls where possibleContainsAnycalls, particularly when called byTryParseNativeTypeName. This shows up as a hotspot during profiling.Consider removingModCSharpSyntaxRewriter