Closed vasily-kirichenko closed 6 years ago
yeah, everything is so awful, that I cannot use it at all. Back to VS 2015.
@vasily-kirichenko I believe that 15.3 preview 3 doesn't contain the necessary fixes. Use the nightly or master
I'm seeing < 1sec red squiglly update on master.
(Note I don't know if nightly can be used with 15.3, I'm using it with 15.2)
@vasily-kirichenko Relevant fixes were https://github.com/Microsoft/visualfsharp/pull/3238 and #3270
I'll close this since it is fixed. For production coding I'd use 15.2 + (nightly or master) today
Nightly VSIX + 15.3 preview 3: 3-4 seconds. Still slow. If you think it's fast enough, ok.
This is how it should work:
If you think it's fast enough, ok.
3-4 seconds is not fast enough. With 15.2 + master I am seeing < 1 second on small scripts, which is fast enough (though faster is always better). We should determine if this is a difference in
on an exact repro case
@vasily-kirichenko Do you have a 15.2 install available?
Yes. Just installed the nighties:
[<AllowNullLiteral>]
type Test = class end
let _: Test = null
let _: Test = null
let _: Test = null
let _: Test = null
let _: Test = null
let _: Test = null
let _: Test = null
let _: Test = null
let _: Test = null
let _: Test = null
My machine is pretty fast (i7 4GHz).
VS Code is also slow (only ~2 times faster than VS), Atom is fast:
So the problem in VS, not in FCS.
Looking at your screenshot https://github.com/Microsoft/visualfsharp/issues/3278#issuecomment-312000055 it seems between 2-3.5 seconds. (3.5 when you add the character, 2 when you remove)
I see ~2 seconds on my machine, but it's clear that that ~2 seconds is taken up mostly by the artificial delay.
There's another usability factor here we should keep an eye on, which is timing consistency
User studies of various things have shown that variable response time (say 1s - 10s) can be even less productive than a fixed, consistent response time well above the average of the variable response time. People basically get used to a particular response time and are productive if it is consistent (and will be even more productive if it is even faster).
TBH I think our response times are pretty inconsistent, though when working only within one file they are probably fairly ok
Today's released Rider beta:
It's clearly an artificial delay - the fact that the semantic highlighting changes quickly shows that we're parsing fast enough. I believe @CyrusNajmabadi knows about these delays and can probably affect some change into how much of a delay we have on our error squiggles. Also IIRC I think one of the other Roslyn devs said that we shouldn't be using document analyzers for our error reporting anyway? I was under the impression only F# does it that way.
@saul what we should use then?
I'm not sure - I can't remember exactly what was suggested. Let me check my emails
Please don't leave these discussions about delays to guesswork. The exact timings of FCS activities involved can now be seen in traces like this: https://github.com/Microsoft/visualfsharp/issues/3094#issuecomment-310230014. They now include a lot of causal information, so it's very easy to see the pauses.
Just connect a debugger to devenv.exe, capture a trace of logging for an activity, paste it in a gist, analyze it,
Also, please make sure you're using master on 15.2. (It's possible the Roslyn-related timings have changed in 15.3, but we don't have a good way of running master reliably on 15.3 yet)
@vasily-kirichenko Are you still seeing these long times? I'd like to close this as the update times on my machine are fast (at least, when all else is working :) )
Yes, it seems working fast on small files, on large ones it's constrained by FCS.
@vasily-kirichenko Super, thanks for checking
Sorry, I was wrong, it still takes about 4-5 seconds to update:
This file belongs to a really tiny project (3 source files, 200 lines of code), which is a part of a large solution (> 100 F# project).
On a hello world project (and a solution that contains this project only), it works about twice as fast:
Compare to Rider:
IMHO this is how it should work.
@vasily-kirichenko It's worth trying setting highPriority=true
here and seeing if it makes a difference:
@saul I think we've looked into it and it doesn't make much difference
@vasily-kirichenko I measure 3.0-4.5 seconds from your screen shot. I think that's roughly where we've been at historically with VS2015, maybe a little slower reaction time.
I'm not sure of Rider's approach to using FCS, but it's possible their approach may not be entirely sustainable, or may have other tradeoffs. But I agree it's very nice and immediate for these samples.
I've tried highPriority=true
, no difference.
Errors highlighting apparently works ok, I'm closing it.
Can we re-open this please? It hasn’t been resolved
@saul Still not resolved?
With 15.7.x the consistency issue should be resolved, now that the error diagnostics analyzer is always run first. I see consistent 1-2 seconds, which although it could be improved, is at least consistent unlike before.
@cartermp OK, I think this should be closed then
Closing (since I apparently never bothered to do that...)
Everything is updated with a huge delay, especially error squiggles. Such a feedback is completely useless while you typing code:
Can the Roslyn team just provide two simple options:
DoNotMakeAnyArtificialDelays: bool
RunAllInternalAnalyzersInParallel: bool
?
I understand that they've made a research and honestly trust that such a behavior is great, but it does not work for F#.