Performance Improvements in Visual Studio 2019

Varun Gupta

Varun

Performance has been a big focus area for Visual Studio 2019, with improvements in many areas, including:

  • Faster Visual Studio startup
  • Faster branch switching experience in Visual Studio
  • C++ open folder – time to IntelliSense improvements
  • Faster C++ compiler build times
  • Faster debug stepping
  • Debug extra large C++ codebases
  • Faster installation updates

Faster and clean startup

Something you’ll notice when you open Visual Studio 2019 is its new start window. The new start window is much faster than Visual Studio 2017’s start window and has been designed to present you with several options to get you to code quickly. In addition, starting with Visual Studio 2019 version 16.1, Visual Studio blocks synchronously autoloaded extensions to improve startup and solution load times. This allows you to get to your code faster.

Visual Studio 2019 Start Window
Visual Studio 2019 Start Window

Faster branch switching experience

When working with Git, part of the usual workflow is to create and work on code branches. The branch switching experience has been completely redesigned over the last 6 months. Starting with Visual Studio 2017 update 15.8, the IDE does not completely unload and reload the solution during branch switches (unless large number of projects are updated as part of the branch switching operation).
To avoid context switching between the IDE and the Git command line, Visual Studio 2019 now provides an integrated branch switching experience that allows you to “stash” any uncommitted changes during the branch switch operation. You no longer need to go outside of the IDE to stash your changes before switching branches in Visual Studio.

Faster Visual Studio 2019 Git Branch Switching
Visual Studio 2019 Git Branch Switching Experience

Faster debugger stepping

Since large part of the development cycle includes stepping through and debugging code, we have worked to bring several improvements to the debugger performance.  Stepping through your code is over 50% faster in Visual Studio 2019 versus 2017.  The Watch, Autos, and Locals windows are 70% faster. Moreover, since most debugger-related windows (i.e. watch window, call stack window, etc.) are now asynchronous, you can now interact with one window in Visual Studio while waiting for information to load in another.

Faster Visual Studio 2019 Debugger Stepping
Visual Studio 2019 Debugger Stepping

Debug very large C++ codebases

Visual Studio 2019 introduces an improved debugger for C++ that uses an external 64-bit process for hosting its memory-intensive components. If you’ve experienced memory-related issues while debugging large C++ applications before, these issues should now be resolved with Visual Studio 2019. You can read how the new external debug process has addressed the current issues in our Gears of War case study.

Visual Studio 2019 Debug Large Coderbases GoW Demo
Visual Studio 2019 Debug Large Coderbases GoW Demo

Indexing and IntelliSense performance in C++ CMake Projects

The indexing is now significantly faster for code opened via Open folder, and, as a result, IntelliSense is available considerably faster, when compared to Visual Studio 2017. As an example, in the LLVM codebase, IntelliSense becomes available 2 times faster in Visual Studio 2019. Additionally, a new indexing algorithm lights up IntelliSense incrementally while the folder is being indexed, so you don’t need to wait for the entire folder to be indexed before you can be productive with your code.

Visual Studio 2019 Faster Indexing and IntelliSense
Visual Studio 2019 Indexing and IntelliSense for C++ CMake LLVM Repository

Faster C++ Build Linker time is 2x faster

C++ builds have been made faster with improvements in the C++ linker. For example, we see over 2x faster build linker times for an Unreal Engine-based AAA game.

Visual Studio 2019 Faster Build Linker time
Visual Studio 2019 Faster Build Linker time

Faster installation of Visual Studio updates

With the introduction of background downloads for updates in 16.0, you can continue working on your code for a longer time, while the update downloads in the background. At the end of the download, once the update is ready for installation, you will get a notification to let you know that you’re good to go. Using this approach, the update installation time for Visual Studio 2019 updates have decreased significantly.

Try Visual Studio 2019 and let us know

We welcome you to try Visual Studio 2019 either with your own projects or with Roslyn Compilers projects we used as examples above and see how it compares to Visual Studio 2017 for your scenarios. We are always looking for more feedback to know which improvements are working for you, which ones are not and which areas we should focus on next.

If you are seeing performance issues, please send us feedback through Visual Studio’s Report a Problem tool that you can access from Help -> Send Feedback -> Report a problem. This tool will ensure that we have the right set of data to help us analyze the issue.

Varun Gupta
Varun Gupta

Program Manager, Cloud and Enterprise

Follow Varun   

58 comments

Comments are closed.

  • Avatar
    Chuck Ryan

    Unfortunately the new Start Window has only cost me time so far as I keep having to show our other deveopers how to turn it off when they start complaining about it opening every time they close a solution. I am not sure I want to know who there thought that was a good idea. But at least I am now saving some time by using Extension Manager to export my default extension list (big thanks to Mads for that). I sent out a new one that adds the extension that replaces the new New Project Dialog with the 2017 New Project Dialog and, other than the occasional cheering, have been able to work in peace today.

    • Varun Gupta
      Varun Gupta

      Hi Chuck, Thank you for the feedback. One of my colleagues worked on this experience and it would be great to learn your feedback. It’s super interesting to hear perspectives. Can you email us at vssolutionload at microsoft com?

      Looking forward to hearing from you, thank you.

      • Avatar
        Chuck Ryan

        I honestly do not have any detailed feedback about the contents of the Start window, because I have zero interest in using it, and all attempts to engage on anything other than ‘how can we improve this thing you want nothing to do with, result in silence. I know the IDE well enough that I do not need my hand held at startup. In general my department all turned it off for similar reasons or just due to the annoyance factor of it. I would say the Start Window and the new New Project Dialog have pretty much influenced the initial impressions of this release and not in a positive way.

      • Avatar
        Jorge Morales

        I’ve been using Visual Studio since the 2003 version and I agree with you, this new Start Window feels great and nice, it’s a new way to open existing solutions, to create new projects and to get straight away to the templates I need. I understand that people, specially those with a large and vast experience, may not like this new and fresh experience, but all in all this change is for a greater good, specially for new people coming from other IDEs and other platforms/OSes. Visual Studio is no longer for .NET only things, and that is great.

      • Avatar
        igor.cwer@gmail.com

        We, most people here, are using VS from the start, and whil we are happy new people are comming to VS, the new Start Window makes completely no sense to us.

      • Avatar
        Chuck Ryan

        Honestly, if my last post deserved getting removed then there really is not much sense me giving any more feedback as you just do not want to hear it.

  • Avatar
    Darren Talbot

    I agree. New start window is a barrier to Visual Studio for me.  i just turned if off and now just make use of my recents menu.  Not as easy as the old start page but much less annoying than the start window.  I really don’t see why we have to have one or the other. Why can we not choose the workflow that suits us.  I’m tired of having these decisions forced on me. Visual Studio gets more annoying at each release for me as I have to relearn new ways to do things I already did.

  • Avatar
    Erwin Beckers

    In our company we’ve been using VS2019 for a while now.. and sorry to say.. its sluggish like hell..
    (Then again… so is VS2017.. but VS2019 is even worse)
    – very often there’s seconds delay when trying to type something.. 
    – intellisense is a real performance killer.. try opening and editting an angular app.. We just switched to VSCode for anything related with typescript and HTML
    – live unit testing.. useless and crashes a lot
    – keep getting these yellow boxes in the top that even VS2019 thinks its slow
    – Seems like communication with azure devops (pulls, syncs, changes,…) gets slower every release
    – And.. did you guys at Microsoft noticed we live in 2019? We build 64bit apps these days. When will we see a 64bit version of visual studio ?

    • Avatar
      Dean Jackson

      VS 2015 was the last one that worked well for me.  2017 crashed like crazy for the first 6 months it was out.

      You might be old enough to remember Bill Gates’ memo back when Windows XP was in its early days, where basically Gates said we’re going put a halt on new features until we get stability and security under control, which let to a SP2 release focused just on that.

      “All those great features won’t matter unless customers trust our software. So now, when we face a choice between adding features and resolving security issues, we need to choose security,” he wrote. https://www.crn.com/news/channel-programs/18837281/gates-calls-for-new-focus-on-security.htm

      I still think about that memo, and I feel Visual Studio needs to focus on bugs/performance instead of adding features….maybe not make any more new features for the remaining life of VS 2019 and only fix bugs and performance (like intellisense).

      • Varun Gupta
        Varun Gupta

        Hi Dean, Thank you for the feedback. I lead performance efforts in the Visual Studio and we have made performance/reliability as top priority areas for Visual Studio. Please give Visual Studio 2019 a try and let me know if you run into any issues. I would personally like to investigate any issues that you run into.

        Thanks!

        Varun

    • Varun Gupta
      Varun Gupta

      Hi Erwin, thank you for the feedback. I would like to investigate the specific trace for your svenario. Could you please contact me at vssolutionload at Microsoft dot com? 

      Thanks! 

  • Avatar
    André Ziegler

    new Start Window, the new “new Project” Dialog are horrible and block effective usage. We will never update to VS2019 and so avoid .net core 3.0/.net 5. If Microsoft tells “f*ck you customers” we can do the same and ignore this company . VS2019 = Windows8/VS2012, unusable at all.

    • Varun Gupta
      Varun Gupta

      Hi Andre, Thank you for your feedback. I am sorry to hear your experience. I’d like to make it better. With Visual Studio 2019, you can continue to use .NET 4.x projects as you did with Visual Studio 2017.

      Could you please email me at vssolutionload at microsoft dot com, so that we can discuss your feedback in detail (especially on New Project Dialog). My colleague who works on Start Window experience would also like to join.

      Thanks!

      Varun

  • Avatar
    Tobias Käs

    The new start screen doesn’t have the right filters. How can I find project templates by technology (WPF, WinForms, etc.) ? This was clear and discoverable in the old tree based system because WinForms, WPF, Asp.NET etc. all had subtrees with their project types in them. In the new start menu? Better guess right how the project types were translated into your language, otherwise the text search will come up with nothing and you have to scroll through every single project template to find the one you are looking for.
    Also if you ever add new project templates for new technologies they’ll not be discoverable at all. Nobody is going to find them now. In the old system it was clear that the new technology got a new subtree branch and it was readily discoverable.
    Sorry but the new start screen is not usable.

  • Avatar
    igor.cwer@gmail.com

    It is really a miracle how VS team can break things from release to release.
    While IntelliSense was working bad in vs2017, but at least controllable, now it 1) does not work, 2) can not be stopped and 3) can hang vs completely.

    And yes, I am using it to work on Unreal Engine project.

    You guys should stop “just checking your IntelliScence on some big codebase”, you should try to work on that codebase with intelliscence enabled.

    • Varun Gupta
      Varun Gupta

      Hi Igor, I am sorry that you are experiencing issues. Coincidentally, we have been working with game devs on Unreal Engine. I will send you a direct message so that we can look into your specific trace. 

      Thanks!

      varun

      • Avatar
        igor.cwer@gmail.com

        You are welcome.

        There are some issues with debug in vs2019. It appeared in 19.1 I think.
        While debugging depending on a position in callstack some objects are shown as pointers without their members exposed. That is not because variable was optimized, but because of sime type withibility problems. Like debug symbols are not loaded. And that depends not on type of your build but on your position on callstack, so you can go upstack – and miracle – class members are visible.
        Quite strange behaviour and I am switching back to vs2017 until that is resolved.

    • Avatar
      Andrew Witte

      If you haven’t noticed UE4 has a god awfel bad and horrid build system. Thats why intelisence doesn’t work as it has to play cache up constantly, not to mention the over use of meta programming leading to unbelievable compile times.

      • Avatar
        igor.cwer@gmail.com

        I know there areflaws in UE4 build system, but it works. I don’t understand how IntelliScense is related to it anyway. Why I press “Go to Definition”, VS shown my dialog “IntelliScence is working…”? I press cancel button, but is still working, and it blocks for minute, like Cancel button is not working. Is it hard for VS to cancel it’s own operation? And how is it related to UE build system?
        That was in VS2017 to, but at least it was able to cancel it’s IntelliScense after some time (and miracle, even find the definition) but vs2019 now can crash or hang forever. Clearly a “progress” here.

  • Avatar
    Arne Klein

    It’s good to see, that the solution load time is improving, however, the two most annoying problems persist for use:
    1. Updating nuget packages is really a pain for large solutions since each project is unloaded and loaded again, therefore taking forever. It currently takes at least half an hour to update just a single package. The time doesn’t get much worse if we update multiple packages, however, if anything fails (like all projects except one have received the update) its almost impossible to find the culprit in this case.
    2. Just opening a project in visual studio gets the fan kicking before we even start to work. IMHO idle performance should be a lot better.

    • Varun Gupta
      Varun Gupta

      Hi Arme, thanks for your detailed feedback. I was just discussing this with my Nuget team colleague last week. I am curious if your packages are hosted on a local server v/s nuget.org. Can you please ping me on vssolutionload at Microsoft dot com so that I can get hold of actual trace to investigate? It would be super quick for you, and it would be very concrete case to investigate.

      Thanks!

      Varun

  • Avatar
    Yves Goergen

    Now what about performance improvements for this weblog? I have to wait half a minute for the post overview and many seconds for each article page. Always. Everywhere. And the Microsoft web login is also broken. When I click on “sign in” I am welcomed with “Something is wrong” and  have to re-enter my e-mail address. Strangely, the password is not required. And of course this process also takes up to half a minute. Look over to Google: I am already logged in. Always. And when I log out, I’m back in in an instant.
    As always, Microsoft fails on the web. Not much has improved over the decades, really.

    • Avatar
      Michael DeMond

      What, you don’t enjoy all that extra time to stare blankly ahead and appreciate the sheer embarrassment of a corporate technology “powerhouse” who can’t even blog correctly?  I mean, this blog only a medium in which MSFT can interact with its developers and paying customers, right?  It’s not THAT important to have a positive experience and feeling whenever you visit it.

    • Varun Gupta
      Varun Gupta

      Hello Yves, thank you for the note. We have been working on improving the blog platform and I think my colleague would love to understand your feedback. Which browser are you using? Are you using Microsoft corporate account login or personal account login?

      Thanks!

      Varun

      • Avatar
        Michael DeMond

        You all have several, and I really have to underscore that it’s embarrassing to even have to tell you any of this.
        1. First and foremost, there is a weird bug when you edit comments.  Edited comments  — even though they show up in your history and in the XML feed — do not show up under the actual post.  A good example of this is found under the recent appcenter post “Moving from Node.js to .NET Core” where you can see my comments in the XML feed but they do not list in the actual post.  (I would post the URL here but your system is so fragile I am halfway expecting it to break if I do).
        2. Authenticated pages take forever to load, whereas if you are anonymous they are instant.  I feel like breaking out the MSFT FrontPage and destroying things.
        3. Authentication token is quickly forgotten.  Seems like you have to reauthenticate every other day or so.  We’re talking super geocities here.
        4. When trying to authenticate with MSFT Account you get the behavior as previously described.  I feel like this was assemblied by an angelfire intern.
        5. Your “Join the Discussion” button is terrible.  It looks like IT is what should be clicked, but when you click it, it tries to tell you to click the Login button.  Very confusing and counterintuitive.
        There are a few others, but they escape me now.  Again, so very disappointing to see the lack of resources here put into the first line of communication between you and your paying customers and those developers who actually care about you and what you have to say.  Inconsiderate, even.

        • Avatar
          Michael DeMond

          6. whitespace and line breaks.  Your editor provides the ability and properly shows linebreaks, but when they actually render, they don’t!  I am not the first to complain about this, either.  The list above looked like a very nice and ordered list as I was compiling it, now it looks like a giant turd of text.
          7. Comment anchors and navigation.  Your RSS feeds provide IDs and links to comments, but when you actually try to visit them, they do not work and scroll to the comment.  Very clear that no one is testing this.
          I should also mention that I just tried anonymous (incognito) view again and it too took a while to “compile” or whatever you all are doing over there to simply serve up a basic HTML page.  It’s about a 15-second delay and feels like the typical use case that you would find in a certification test of poor practices that you are tasked to fix.
          Finally, I would like to mention that this is all on the latest version of Chrome.  i would edit my previous comment, but… see item #1.

      • Avatar
        Yann Duran

        We have been working on improving the blog platform
        Unless Microsoft has bought WordPress you probabaly aren’t improving the blog platform as that’s what the Developer Blogs seem to be created with. And a new WordPress account is created in the background for you if you try to log in with a Microsoft account.Isn’t that the case? Microsoft isn’t even using any of its own technology stack, not even ASP.NET Core MVC?

      • Nicole Bruck
        Nicole Bruck

        Thank you for creating a Developer Community issue so we can start tracking these right away. We really appreciate your willingness to engage with us and help us keep our focus on these pressing issues. 

        After reading through your comments, @MichaelDeMond, I ask you to please review the Microsoft Community Code of Conduct and watch your language when posting a comment. While we greatly appreciate you taking the time and effort to tell us where our platform could be better, it’s important that we treat each other with respect and consideration. If you have any questions or concerns about our Code of Conduct, please reach out to me at nicole.bruck@microsoft.com.

    • Nicole Bruck
      Nicole Bruck

      Hi folks, I work on the Microsoft Developer Blogs and I apologize deeply for your poor experience so far. Our development team has been working extremely hard on building up this blog platform and it’s clear that there is plenty of opportunity to improve even further. We’re taking your feedback very seriously and we look forward to building you a great blog experience.

      @YvesGoergen, I’m sorry that the login experience was broken for you. If you continue to see an error and/or need to sign in constantly, please report it. That is not the expected behavior and we’ve started investigating but any additional information you can share would be immensely helpful.  

      To all, please keep reporting any problems that you encounter on our blogs by either up-voting/creating an issue in the Developer Community or selecting our Feedback button in the bottom right of the screen. We’re continuing to prioritize performance issues so please share any data or specific details about your experience. Thank you for taking the time to flag these areas for us and we will do our best to prioritize the most impactful issues first. 

      • Avatar
        Chuck Ryan

        This post is an excellent example of one of the biggest problems with using Microsoft products/services in recent years. With increasing frequency Microsoft is almost entirely relying on customers to do their QA and troubleshooting for them. With each new release we are expected to spend a good part of our time diagnosing, reporting and upvoting problem reports so that Microsoft will decide if it is an issue they are willing to fix.

        Meanwhile our sprints/deadlines do not change so we are forced to build into our estimates how much time we think we will be spending on Microsoft issues, generally related to how recent a new release/patch was applied, as opposed to getting our own jobs done. Our companies are spending far too much money on Microsoft products/services to be dealing with a level of reliability issues that would embarass an open source/freeware development team.

  • Avatar
    Stepan Hakobyan

    Disabled the new start window after few days of using VS2019. It was useless to me, it is good only for limited scenarios.

  • John Line
    John Line

    I’m a retired Software Engineer, but I still write in C# using VS Community 2017 v15.9.5.  If I click on the “Download Visual Studio 2019” button above, will it be a “You gotta pay for me!” version, or is/will there be a Community version?
    In terms of what I’d love to see in VS, how’s about having a “Break on Data-change” debugging option?  I used to use this a lot back in VB6 and really miss this functionality in VS.