-
Notifications
You must be signed in to change notification settings - Fork 790
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
Performance is slow for DSL build with CE #12723
Comments
Related issue: slaveOftime/Fun.Blazor#24 |
TBH this is somewhat expected as things stand - the de-sugaring of CEs can lead to m=plenty of method resolutions and it's not to be taken for granted that it allows very large CE expressions without some penalty in diagnostics and compilation times. I'd encourage you to consider this when assessing whether the CE technique is suitable for your DSLs. We can aim to continue to improve compilation times for this, and I'd strongly encourage you to do a profiling run - which would probably quickly determine some low hanging fruit on this path. However there should be no real expectation that using CEs on very large inputs will be free of some downsides - it's in their nature. |
Maybe we should add this to CE docs to let people know its not suitable for large DSL instead of after we spend many times then find out it is not a suitable way. :( |
Compared with 16.11.3 and 17.0.6. The IDE will crash for just 300 lines of CE expression in 17.0.6. Can we improve CE performance for codes under 500 lines? |
Let's track this one in #14429, since it has much more info. |
I am building a DSL for blazor with CE, but we find that when the code line grows to just 300 the performance is going to be noticable. If we got more logic or more lines it is almost no intellicense because it is too slow.
Repro steps
Expected behavior
Should be fast enough for a single file less than 1000 lines
Actual behavior
Slow start from 300 lines of code in a single file
Known workarounds
No
Related information
The text was updated successfully, but these errors were encountered: