-
Notifications
You must be signed in to change notification settings - Fork 831
Possible fix for script processing #6301
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
Conversation
|
Basically the call to InvalidateConfiguration looks wrong. We do recompute the project options for the script on each file change - this is ok - it's not optimal - but exactly what we did before. But it's not OK to blow away the incremental builder that does the type checking, which is what InvalidateCOnfiguration does. AFAIK there was no InvalidateConfiguration on this path before. Separately I move three lines under a cache lookup, which I think is correct, it will reduce the amount of recomputation on each change Haven't compiled this (don't have dev16.0 installed) but I think it's right |
|
This will probably fix the regression, but we should also test that adding additional load script directives will give us completions based on what is inside the loaded script files. |
|
@TIHan Hey you're meant to be on holidays :)
Yes you're right. There are other incremental scenarios to test, e.g. that editing a These should all work, at least the did in VS2015 and I believe they do in VS2017. If they don't, then we have to dig into why - the use of A possibility is that the |
|
@dsyme, this says possible, let me know when it is done. Thx |
|
Hi Guys, a bit of overall feedback, I've updated to VS 2019 preview 3 to 4 and it seems to be worse, I was happy so far with the performance in script editing versus VS 2017 / 2015 but now I can't use it, hope a fix makes it soon. In context of editing a script, is it worth to have the error reporting on first issue on I edit scripts which may have large set of dependency (assemblies and other scripts) and keeping the editor snappy at all times even if I lose aspects of the tooling for a bit is better than freezing like VS tend to do. I've noticed when it gets really slow, even manipulating the selection span (without dragging the text) was causing delays, so some of the issues may stem further down in the VS editor. What is also missing in script editing, compared to what VS2015 + VFPT provides is a better navigation to symbols defined in loaded scripts and assemblies, without the need to have a project loaded or the even code, VS can display the assembly in object browser as a fallback. I'm very positive about VS 2019 + F# release, the issues seems to get ironed out 👍 |
|
As of latest commit the perf with |
|
@cartermp Did you do some more testing? From our session on Tuesday my impression is we made progress, but we may still be significantly slower? |
|
(In the perf traces I certainly noticed that we are burning a lot of UI thread time recomputing project options for scripts. We can make that much cheaper with an FCS cache on parsing #load script files I think) Also the synchronous completion and editor dialog on Ctrl-space is a particular worry - in vs2017 this completion is never UI blocking and the difference is noticeable - perhaps this bug is being fixed) |
|
The user-visible perf on autocompletion + dot completion seemed similar. The forced completion blocking isn't us, so it shouldn't block merging this IMO. Though a cache in FCS isn't a bad idea. |
Okey dokey. Definitely this is a considerable improvement. I'll see if I can add the cache. |
* Possible fix for script processing * Update FSharpProjectOptionsManager.fs * add test files and improve fix
For @cartermp to try, #6250