Skip to content

Slow solution load times for massive solutions #4904

@cartermp

Description

@cartermp

This is a continuation and up to date version of #2107.

There are two project systems used, depending on what you target:

  • .NET SDK (Framework or Core or Standard) ---> CPS via the .NET Project system
  • .NET Framework (big project files) ---> Legacy F# project system

The latter is used by most solutions in the wild today, but many people are migrating to the .NET SDK for a number of reasons. Both suffer solution load time woes.

SDK style project behavior

From @saul on SDK projects:

I could see that the projects were moving around/refreshing in the Solution Explorer (some projects had 'Dependencies' nodes, some didn't). After about 5 seconds, the UI completely locked up and 5 minutes later I still can't use it (it's 'Not Responding').

The following are upon testing huge/Dense.sln

Legacy project behavior

From @saul for Legacy projects:

Opening Huge/Dense.sln in VS 2015 Update 3 takes 02:00 minutes to get to a fully working editor. After the "Preparing Solution" progress dialog closes, it's basically ready to use.

In Visual Studio 15.7.1 with the nightly tools - same machine, same solution:

00:36 minutes in, the Solution Explorer appears (and is populated). The 'Preparing Solution' dialog stays open.
08:16 minutes in, the 'Preparing Solution' dialog closes so I can now edit the source files. The UI is semi-responsive, syntax colourisation is not updating.
08:53 minutes in, the colourisation is updating in real-time as you'd expect.

I've got a feeling that we've regressed on the 'compute sources and flags' again, and that we're calling this too often on load again.

This is on an 8 core, 32GB RAM server with SSD - I dread to think what this is like on my dual core laptop.

Metadata

Metadata

Assignees

No one assigned

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions