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

Perform code-lens 'find' operations serially. #51395

Merged
merged 8 commits into from
Feb 23, 2021

Conversation

CyrusNajmabadi
Copy link
Member

@CyrusNajmabadi CyrusNajmabadi commented Feb 22, 2021

CodeLens both runs in the background, and and is commonly run on many visible symbosl in a file. This leads to a lot of find-references work in our OOP process that is currently done in parallel. This parallel work uses all the cores it can get, and can generally slow down the editing experience in the host VS process as tehre is less CPU available for the jobs it wants to do.

To avoid this problem, this PR adds a new flag to control if we do this sort of work in parallel or not, and updates CodeLens to ask that the work be done serially instead. Existing, explicitly invoked features (like FindReferences) will still do work in parallel so they can get their results back to the usre as quickly as possible.

Fixes AB#1280758

/// Scheduler to run our tasks on. If we're in <see cref="FindReferencesSearchOptions.Explicit"/> mode, we'll
/// run all our tasks concurrently. Otherwise, we will run them serially using <see cref="s_exclusiveScheduler"/>
/// </summary>
private readonly TaskScheduler _scheduler;
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 At this point, this could be a property.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants