Visual Studio vNext Performance Enhancements

Continuing on our odyssey of exploring the features in vNext, I thought we would look at some of the performance enhancements that have been publicly announced.  Naturally, at this time, I can’t go very deep into the inner-workings of the improvements but will endeavor to list them out and explain somewhat based on information currently available.  Also, be aware that this is a very early look at these features so there will be many improvements made as the product gets closer to RTM.  I’m actually running two versions of vNext currently; the one that will be made available to the public as a pre-release at some point and the one we build internally so I have a pretty good handle on what you will see and what is coming out.  I can say that there are some great things that are being done with the product you will definitely enjoy.  With that said let’s take a look at some of the things we have revealed so far…

 

Microsoft Visual Studio IDE Futures

First off, if you haven’t seen it yet, most everything I mention comes from the great TechEd session done by Weston Hutchins that can be found here:

https://channel9.msdn.com/Events/TechEd/NorthAmerica/2011/DEV326

 

 

Performance: The Four Pillars

For vNext we are focused on four areas of investment to improve the product:

  1. Overall Responsiveness
  2. Long Running Operations
  3. Memory Utilization
  4. Better Feedback

 

Overall Responsiveness

As I review the areas of improvement expect a great deal of overlap as many of the improvements fall into multiple categories.  With that said, this area is pretty self-explanatory:  We want vNext to enable users to quickly go about their work without waiting on the IDE.  These improvements manifest themselves in a variety of ways but all have the singular goal of making the product more responsive.  Below are some of the areas that address this goal that we have made public so far.

 

Faster, Stronger, Better Add Reference Dialog

One of the IDE enhancements revealed so far is Add Reference dialog box.  First and foremost it has been supercharged to load almost instantaneously.  How?  We index the assemblies beforehand to have a ready-made list on demand.  We haven’t gone into detail yet on what exactly is being done but expect that revelation in due course.  Also, as with most of the IDE, we have added the ability to search/filter the list so you don’t spend a billion years looking for the assembly you want.

 

Out-of-Process Operations

We have moved some activities out-of-process to give control back to the IDE quickly.  See Memory Utilization.

 

Parallel Operations

vNext will take advantage of multi-core systems much better than VS2010 which will result in more overall responsiveness.  See Long Running Operations.

 

 

Long Running Operations

Building and debugging are examples of a long-running operations that we are addressing.  For example, Visual Studio 2010, while a great improvement over previous versions, really doesn’t take full advantage of multi-processor machines.  Our goal is to speed things up so you can get your work done faster with less time spent waiting.

 

Background Builds

Build operations have now been moved to background threads so you can actually do other things in Visual Studio while a build is happening.

 

Parallel Project Builds

Another great new feature is the ability to build projects in parallel.  vNext comes with an option to have parallel project builds based on the number of cores your system has.  In fact, the default value is automatically set to the max cores on your system.  You can reduce this value if you want.

 

 

Memory Utilization

Responsiveness also includes the overall efficiency of Visual Studio.  We are working on reducing the memory utilization overall based on usage. 

 

Virtual Memory Utilization

vNext uses much less virtual memory internally.  Much of this is due to running builds out-of-process (see below) as well as other enhancements we have made that haven’t been released yet.

 

Out-Of-Process Builds (C++, C#)

C++ has had this feature for a while and we are now brining it to C# and, in a future release sometime after vNext, VB as well.  We now perform builds outside the Visual Studio process.  Instead of loading numerous referenced assemblies inside the VS process they are now loaded into an external process then discarded when we are done.  This results in significantly less memory usage inside Visual Studio which results in a more responsive, stable product.

 

 

Better Feedback

This one is really simple.  How do we get the best information possible when there are issues with the product so we can continuously improve it for you?  Solving for this question is never easy but we have devised ways of obtaining performance data from your actual use of the product to help strengthen our knowledge of areas that need to be addressed.

 

PerfWatson, PerfWatson, PerWatson

The number one tool you can download TODAY to give us feedback on VS2010 and vNext is PerfWatson.  You can get it from the Visual Studio Gallery here:

https://visualstudiogallery.msdn.microsoft.com/fa85b17d-3df2-49b1-bee6-71527ffef441

This tool allows us to get up-to-date, immediate information on the issues that are impacting performance.  This tool is currently built into the pre-release version of vNext and, I suspect, we will include it in the RTM version as well with an option for you to turn it off if you don’t want it.

 

Visual Studio Feedback on Connect

If you haven’t gone to https://connect.microsoft.com/VisualStudio/ yet then you need to.  This is one of the main ways we have been getting directed feedback from you for some time now.  It’s a great way to get to see what others are saying and to communicate directly with the VS team.