Introduction
Since the launch of Visual Studio 2022, we have been continuously making performance improvements to enhance game developer productivity. In my Microsoft Game Dev talk for GDC, I shared why Visual Studio is the ultimate IDE for game developers. I also partnered with the folks at Double Fine Productions to demonstrate their most loved features when developing the Award-winning Psychonauts 2. Next, I shared features that Double Fine is most excited for in VS2022. Lastly, Microsoft Game Dev announced that a set of GitHub Actions for Perforce Helix Core on Azure, authored directly by Perforce, is now available.
In this blog, I will show you some amazing speed improvements when searching and getting to code by discussing our measurements from large codebases such as Unreal Engine and Chromium. See how much faster you can get to code with speedier C++ IntelliSense ready and opening a file. Search faster with C++ Find All References and indexed Find in Files.
While game developers and developers with large codebases will benefit from these improvements the most, all C++ developers will gain increased productivity with these changes.
Testing Methodology
We tested using an Unreal Engine 4 sample project on a desktop with an Intel Core i7-9700 @ 3Ghz, 64GB RAM, and an SSD. The tests took place on Visual Studio 2019 16.11 and Visual Studio 2022 17.1. The results were averaged over 3 runs. For Find in Files, we benchmarked using the Chromium repo, with more than 300,000 files.
Results
Getting to Code
When opening a file on Visual Studio 2019, it took 2.02 seconds for code to show up. In Visual Studio 2022, you can see the same action completing in only 0.82 seconds, resulting in a 2.44X speed up. In Visual Studio 2019, the time it took for semantic colorization to show up after opening a file was 12.9 seconds. You will experience that the same action is 2.22X faster in VS2022, taking 5.8 seconds.
For Unreal Engine projects, you will experience additional speed up for IntelliSense readiness. Learn more in this blog post.
Code Search
In Visual Studio 2022, you will see a speed up of 1.74X when using C++ Find All References (Shift + F12). The action was completed in 17.36 seconds; compared to Visual Studio 2019, the action took a little over half a minute. For Find in Files in Visual Studio 2019, searching through 300,000 files in the Chromium repo took 30 seconds. In Visual Studio 2022, you will notice that the same action will take 1.5 seconds, a 20X improvement!
Analysis
You will notice several optimizations to the IntelliSense engine that created more efficiency in getting to code scenarios. Find All References was also enhanced by eliminating inefficiencies during search.
For Find in Files, you can now take advantage of indexed search. To enable indexed searching, go to Tools > Options > Environment > Preview Features and ensure “Enable indexing for faster find experience” is checked. For more details, please see this blog post.
Feedback Wanted!
Your feedback through Developer Community, surveys, and social media channels has made these improvements possible. We thank you for your valuable comments. These enhancements are a continuation of our focus on improving productivity for game developers. Throughout the Visual Studio 2022 development cycle, we will continue to make improvements like ones detailed in this blogpost. If you are a game developer, let us know your thoughts in our 2022 Visual Studio Game Developer Survey.
In addition, please continue to help shape the development of Visual Studio by talking to us in the comments below, on Twitter (@VisualC), or via email at visualcpp@microsoft.com
Upgrade to Visual Studio 2022
Download the latest version of Visual Studio 2022 to take advantage of these productivity benefits today!
Hi,
it would be nice if IntelliSense could work better in large projects that use big precompiled headers (eg: a lot of STL includes or a lot of common headers in the custom PCH/stdafx).
If a header is included in a source file and that takes advantage of the the prcompiled header (#include "PCH.h") and that source file is not opened in the background, the IntelliSense may fail to work properly in the header file:...