-
Notifications
You must be signed in to change notification settings - Fork 4k
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
Typing in Razor files breaks C# incrementality resulting in high CPU & memory usage #59818
Comments
Related VS Feedback issues: https://developercommunity.visualstudio.com/t/Editing-Blazor-files-consumes-all-CPU-fo/1676170 |
Assigning to @chsienki to triage. |
From discussion with @chsienki, the issue is that
|
This is a tactical hack which aims to address some of the CPU overhead that we were seeing in dotnet#59818. Closes dotnet#59818
This is a tactical hack which aims to address some of the CPU overhead that we were seeing in dotnet#59818. Closes dotnet#59818
This is a tactical hack which aims to address some of the CPU overhead that we were seeing in dotnet#59818. Closes dotnet#59818
This made it in for 17.2 Preview 4. |
Thank you all very much for all your diligent and amazing work out there. It is greatly appreciated and respected. 🙏 |
Overview:
Razor IDynamicFileInfoProvider output is fed into SourceGenerators which breaks C# incrementality and significantly impacts performance.
Version Used: All
Steps to Reproduce:
Expected Behavior:
Generated output from Index.razor is not fed into Json SourceGenerators
Actual Behavior:
Generated output from Index.razor is fed into Json SourceGenerators
Additional Notes:
@sharwell and I were investigating customer reports of high CPU utilization in Razor scenarios. Turns out Razor files (they emit larger C# files) are always fed into the Json, Logging & any other source generator. This in turn results in a lot of extra CPU churn for Razor projects. After digging into some traces we can see HEAVY allocations in the Roslyn service hub process from the realization of red trees from the Razor files:
One implementation note we should think of is that we also have a counter issue where the Regex generators in .NET 7 do not run on Razor output resulting in the new Regex .NET 7 capabilities missing.
/cc @jasonmalinowski
The text was updated successfully, but these errors were encountered: