Today we released Visual Studio “15” Preview 5. With this Preview, I want to focus mostly on performance improvements, and in the coming days we’ll have some follow-up posts about the performance gains we’ve seen. I’m also going to point out some of the productivity enhancements we’ve made.
A big step forward in performance and memory efficiency
I’d like to start with a side-by-side video that will give you a sense of all the performance improvements in one look. This video compares starting Visual Studio and loading the solution for the entire .NET Compiler Platform “Roslyn” in 30 seconds with Visual Studio ‘15’ compared to 60 seconds with Visual Studio 2015:
The faster load time is a result of a couple of the improvements we’ve made – lightweight project load and on-demand loading of extensions. Here are some of the key performance gains in Preview 5:
- Shorter solution load time with lightweight project load: Working on solutions that contain upwards of 100 projects doesn’t mean you need to work with all the files or projects at a given time. VS “15” provides editing and debugging functionality without waiting for Visual Studio to load every project. You can try out this capability with managed projects in Preview 5 by turning on “Lightweight Solution Load” from Tools -> Options -> Projects and Solutions.
- Faster startup with on-demand loading of extensions: The idea is simple: load extensions when they’re needed, rather than when VS starts. In Preview 5 we started this effort by moving our Python and Xamarin extensions to load on demand and are working on moving all extensions we ship with Visual Studio and extensions shipped by third party extension vendors to this model. Curious about which extensions impact startup, solution load, and typing performance? You can see this information in Help -> Manage Visual Studio Performance. Do you develop an extension? We will be publishing guidance to help extension developers move to on-demand loading.
- Faster project load, coding, and debugging for C++: We have made loading C++ projects faster. Check out this video showing the improvement. You can enable this by setting “Enable Faster Project Load” to True from Tools -> Options -> Text Editor -> C/C++ -> Experimental. We have also made improvements to our linker and PDB loading libraries to make incremental builds and launching the debugger much faster while significantly reducing memory consumption while debugging.
- Improved speed when using Git, Debugging, and editing XAML Code: We have improved the speed of source control operations by switching from libgit2 to git.exe. We have also improved debugging performance by optimizing initialization costs and other costs related to IntelliTrace and the Diagnostic Tools window, and removed several delays that occur when editing XAML files.
This is just the start and we are dedicated to making improvements like these to make Visual Studio start faster, be more responsive, and use less memory. Keep an eye out for more posts on the Visual Studio blog over the coming days where we’ll go deep into the technical details behind these improvements.
We rigorously test these changes to anticipate issues and deliver the best performance but there is no substitute for real world code. We need your help! So please install Preview 5, try it out with your large solutions, and tell us what you think by using the Report-a-problem tool within the IDE.
Improvements in productivity
Visual Studio “15” also has a lot of features aimed at keeping productivity high.
IntelliSense filtering is now available in C#, VB and C++. While exploring complex APIs, you can narrow to just the type you need (for example, just methods, properties, or events). In C# and Visual Basic we determine the “target type” required at a position and preselect items in the list matching that type. This speeds up your typing flow and removes the burden of having to figure out the expected type at a given location.
In C++, an experimental Predictive IntelliSense feature shows a filtered list of IntelliSense results so you don’t have to scroll through a long list. Only items of the expected type are listed based on need based probability. You can turn on this feature in Tools > Options > Text Editor > C/C++ > Experimental.
In XAML, we have added IntelliSense completion for x:Bind which provides a completion list when you attempt to bind to properties and events. Namespace completion offers to auto-complete the prefix if the reference to the namespace already exists. XAML IntelliSense has also been updated to filter out types and properties that do not match. The closest match is selected, so you only see relevant results and don’t have to scroll through a long list of types.
Quick Fixes and Refactorings
To help you maintain a readable codebase and catalyze your development workflow, we’ve added more Quick Actions and Refactorings for C# and Visual Basic. Move Type to Matching File moves a type into a new file that has the same name and Sync File and Type Name gives you the option to rename your type to match your file name (and vice versa). Lastly, Convert to Interpolated String lets you embrace C# 6.0 and VB14 goodness by transforming your `string.Format` expressions into interpolated strings.
Getting around, and knowing where you are in a large codebase can be challenging; we’ve added several new navigation features to help with this. Go To: (Ctrl + , or Ctrl + T) lets you quickly find files, types, methods, and other kinds of objects in your code.
Find All References (Shift+F12) now helps you get around easily, even in complex codebases. It provides advanced grouping, filtering, sorting, searching within results, and (for some languages) colorization, so you can get a clear understanding of your references.
In Preview 5 we have introduced and experimental feature: Run to Click. You no longer need to set a temporary breakpoint to skip ahead and stop on the line you desire. When stopped in the debugger, simply click the icon that appears next to the line of code your mouse is over. Your code will run and stop on that line the next time it is hit. You can turn on this feature in Debug > Options > Enable Run to Click.
The New Exception Helper: See what you need more quickly with the new Exception Helper. View the most useful exception information at a glance, including seeing what variable was null, in a compact non-modal dialog with instant access to inner exceptions.
Try it out
For the complete list of everything in this release, along with some known issues, look at the Visual Studio “15” Preview 5 Release Notes page.
A couple of important caveats about Preview 5. First, this is an unsupported preview so don’t install it on machines that you rely on for critical production work. Second, Preview 5 should work side by side with previous versions of Visual Studio, but you must remove any previous Visual Studio “15” Preview installations before beginning the setup process. Check out this Preview 5 FAQ for other common questions.
As always, we welcome your feedback. For problems, let us know via the Report a Problem option, either from the installer or the Visual Studio IDE itself. Track your feedback on the developer community portal. For suggestions, let us know through UserVoice.
|John Montgomery, Director of Program Management for Visual Studio