Skip to content
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

"Time to all errors" much slower with VS versus rider/resharper #37205

Open
CyrusNajmabadi opened this issue Jul 13, 2019 · 4 comments
Open

"Time to all errors" much slower with VS versus rider/resharper #37205

CyrusNajmabadi opened this issue Jul 13, 2019 · 4 comments
Labels
Area-IDE Bug Tenet-Performance Regression in measured performance of the product from goals.
Milestone

Comments

@CyrusNajmabadi
Copy link
Member

CyrusNajmabadi commented Jul 13, 2019

Repro steps:

Clone https://github.com/DotNetAnalyzers/ReflectionAnalyzers
dotnet restore the solution
open in a recent VS.
turn on FSA.
make a change to: C:\github\ReflectionAnalyzers\ReflectionAnalyzers\Helpers\Reflection\BindingFlags.cs

For example, edit internal enum BindingFlags to internal enum BindingFlags1

Wait for all errors to be reported.

This takes roughly 50 seconds on my machine. For comparison, resharper does it in around 5 seconds (see the spinning icon in hte lower right):

image

That's an order of magnitude difference and greatly impacts the experience around being able to introduce issues then efficiently find and fix them.

@CyrusNajmabadi
Copy link
Member Author

Tagging @kendrahavens @jinujoseph @heejaechang @mavasani . This was reported by a customer. I'm able to repro this myself.

It's unclear to me what's taking so long on the VS side TBH. Perhaps it is trying to do things like figure out "suggestions" instead of prioritizing just getting and reporting compiler issues first?

@CyrusNajmabadi
Copy link
Member Author

Note: this is not a large project (maybe around 20k tops). Also, what's extremely strange is that just building only takes around 10 seconds on my machine. So live errors (where we don't actually have to produce and emit IL) takes 5x longer than a real build.

@mavasani
Copy link
Member

I will investigate and pull in @heejaechang as and when needed.

@mavasani mavasani self-assigned this Jul 15, 2019
@mavasani mavasani added Area-IDE Tenet-Performance Regression in measured performance of the product from goals. labels Jul 15, 2019
@mavasani mavasani added this to the 16.3 milestone Jul 15, 2019
@mavasani
Copy link
Member

Tagging @heejaechang as he is the expert on IDE analyzer execution algorith,

Just verified that this still repros on latest build even after CodeLens has been turned off. I believe this is due to the fact that we even though we prioritize the compiler analyzer amongst all the analyzers in the compilation, our IDE analyzer execution model still goes file by file and executes all analyzers on each file before moving to next file. We would need to change this to be a 2 pass model - first pass runs compiler analyzer on all pending files to analyze and second pass runs remaining analyzers on all pending files to analyze. Does that sounds correct Heejae?

@mavasani mavasani assigned heejaechang and unassigned mavasani Jul 17, 2019
@jinujoseph jinujoseph added the Bug label Jul 18, 2019
@jinujoseph jinujoseph modified the milestones: 16.3, Backlog Oct 9, 2019
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Area-IDE Bug Tenet-Performance Regression in measured performance of the product from goals.
Projects
None yet
Development

No branches or pull requests

4 participants