Performance Improvements in Visual Studio 2019
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.
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 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.
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.
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.
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.
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.
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.
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.
There are a number of comments from people who don’t like the new start page here: Developer Community VS Start Page. That’ll give some insight into why people don’t like it.
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.
I like the start window and I think it’s very well designed. Please don’t remove it.
Coming from Android Studio and Intellij IDEA, the Start Window makes sense to me.
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.
the start window was my reason to stop trying Intellij IDEA/Android Studio after 1 day.
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.
Hi Chuck – we do have a suggestion ticket on Developer Community tracking the request to not open the modal start window automatically when you close a solution. Please do upvote it if you think that behavior is in the right direction – https://developercommunity.visualstudio.com/content/idea/534023/dont-automatically-reopen-start-window-after-closi.html Thanks!
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.
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.
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 ?
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).
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.
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?
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.
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.
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.
Hey Tobias – adding project type filters is up to the template authors. We’ll follow up with them to make sure they get this feedback. In terms of discoverability of new types, there are a couple suggestion tickets on developer community tracking these requests. I’ve put up some design ideas in the comments. Please engage and vote on them. Your feedback would be super helpful!
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.
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.
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.
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.
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.
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.
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.
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.
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.
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?
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.
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.
“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?
FWIW I have captured these grievances here: https://developercommunity.visualstudio.com/idea/595756/fix-your-blog.html
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 firstname.lastname@example.org.
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.
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.
Disabled the new start window after few days of using VS2019. It was useless to me, it is good only for limited scenarios.
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.
2019 community version is available…https://visualstudio.microsoft.com/downloads/
Click the blue “Free download” button in the “community” column.
To break when data changes, you can set a “Data breakpoint”. https://stackoverflow.com/questions/160045/break-when-a-value-changes-using-the-visual-studio-debugger
…and for .Net Core:
Hello John, thank you for being long term user of Visual Studio! There is a community version available – just go to link again https://visualstudio.microsoft.com/vs/ and click on combo box right next to “download Visual Studio” and select community SKU.
The blogs at devglogs.microsoft.com (asp.net, etc.) sporadically don’t show the top main nav bar (Product Blogs, DevOps, etc.) for me in Firefox 66 x64 on Win 8.1. Also, the new blogs are much slower to load for me in Firefox, but are fast in other browsers.
Thanks Dean for the specific feedback! My colleague who works on the blog platform is back in office on Monday. I will speak to her and we will review this report. Thanks!
The memory usage reduction and performance improvements are all well. But given that we still cannot load our C# 200+ projects solutions in Visual Studio because it’s stuck on 32-bit, we cannot use Visual Studio at all.
Nice way of losing hundreds of developers as customers. Good thing JetBrain Rider works.
I am sorry to hear that you are experiencing loading issues.
I typically load Roslyn repo that has over 160 projects. I would like to investigate what’s going on in your case. Can you please Contact me at vssolutionload at Microsoft dot com? I directly work on making solution load faster, so very interested to speak to you.
One thing I would like to see from visual studio is a change to a 64 bit process. Obviously this is no small feat and I have read up on why you have chosen not to do so. However I have found extension performance is pretty bad due to having to fit within the 3GB process limit, and a real pain point is that I cannot have a x64 based project with an inherited base class for winforms because the designer can’t run the 64 bit code. I have a large project that requires 64bit addressing so any cpu is not an option. But I have to always change to any cpu, build, modify, change to x64, test… Over and over and it’s a huge time sink.
I understand it is a very large task but this seems like something that should already be underway if not already completed.
The new synchronous disabling has been an annoying pain for me as every VS update disables resharper again. I then open my project (which takes like a minute) and then have to restart it again because of the start screen blocking the ability for me to see it immediately.
Hello Mike, Thank you for the detailed feedback. Note that ReSharper 2019.1 supports asynchronous extensions load feature.
My colleague Mads who works on extensions and I would love to understand your feedback better. Can you email us at vssolutionload at microsoft dot com for further discussion on this.
I agree with most comments.
1. Start page is step back.
2. New project dialog is step back.
3. We need x64 VS Because of memory and c# disigner (with x64 controls inheritance) problems.
4. You blogs sre slow and not comfortable to use.
I’ve bitten the bullet and just moved to Rider full time. VS is too slow even on my Threadripper 1950X overclocked to 4.1Ghz.
What about for C#?
I wish there were an option to replace this annoying Start Window to old Start Page from VS2017. But there is no such an option, so I had to disable this Start Window completely. At least thank you that provided an option to disable this window.
I guess we’re not getting a 64-bit VS in this decade then.
I used VS2019 for a few weeks when one of the first previews came out. Ended up uninstalling for three reasons:
the debugging step icons turned out to be a constant source of frustration resulting in not only a breakpoint in the code but also my own pesonal workflow needing deciphering on what was actually meant vs. what I want (in, over, out).
I was inundated with excessive warning messages “your license is about to experire” starting at once a day increasing in frequency to many times a day. At the same time i was getting similar message from other microsoft applications (outlook, mail) all with excessive nannying interupting my workflow the whole day. Gems such as:
“there is a problem with your account” – no Microsoft, my account / password / setttings are just fine
“your account has expired” -no Microsoft, my account / password / setttings are just fine
“your account settting are out of date” – no Microsoft I really don’t want to use “Windows Hello”
“you are logged in with blahblah” – no Microsoft I logged myself out, shut my machine off and went to bed, when I power my machine on in the morning I am not logged in to anything!
Every update to a Microsoft update I get, I notice there is more nannying, more spying, more idiotic / unnecessary changes, more emoticons, more nonsense. The lastest is “improved” UI design in Office 365. For the first time in two years of paying for Office 365 I wondered if Outlook 2010 did not have a more functional UI.
Back to VS2019, it ended up being a constant source of frustration so I uninstalled it and went back to VS2017. Any improvements to performance in a few seconds were offset by minutes and hours lost. Rather live a hang once or twice per day requiring a restart, and my Razor C mark up formatting blowing up.
I have since installed a Mac virtual machine in VMware, installed Office365 and Visual Studio as the first steps just to see if it would be possible.
Performance is extremely slow (I have an i5-7500 at 3.41 GHz and 16 gigs of ram), IntelliSense doesn’t work half the time, makes productivity very hard. Honestly, this is unacceptable.
I was excited to switch from 2017 to 2019. Been using it for the whole day. But I noticed it gets slower the longer I used it.. not sure if it’s a memory leak or what. I googled it to find out if it’s just me .. nope. : (
I think I’ll go try out VS Code again… I remembered that tool loaded fast and didn’t slow down my computer over time.
Google searched tips on speeding up the debugging process in VS 2019 and found this page that made me chuckle. It’s still super slow dude even on newer PC’s.