Learn to use Visual Studio, Visual Studio Online, Application Insights and Team Foundation Server to decrease rework, increase transparency into your application and increase the rate at which you can ship high quality software throughout the application lifecycle
Update: this blog post has been updated for Visual Studio 2013 Update 3 – enjoy!
If you attended our Build conference or watched some of the videos, you may have seen some of the new profiling tools and our Performance and Diagnostics hub. This blog post will provide an overview of the hub and the various performance analysis tools that we have built.
Since we released Visual Studio 2012 we have added new profiling tools to Visual Studio while improving the overall user experience with the introduction of the Performance and Diagnostics hub.
We have been continually building new capabilities into the Visual Studio Profiler, including some great tools in this release that will make it easy for you to build fast and efficient apps. As we added new tools we found that our previous menu items and wizards were not suitable to the variety of languages, application types, and platforms that the profiler now supports.
The Performance Wizard tells you a performance tool cannot be used after you have already selected it
As you can see from this cursory overview, figuring out which profiling tools are available and launching those tools was becoming less straight forward in Visual Studio as we continued to add more capabilities into the profiler. So we introduced the Performance and Diagnostics hub to address that – keep on reading!
In Visual Studio 2013 we have simplified the experience of finding and launching performance tools by introducing a single starting place for all of your profiling tools. We call this new starting place the Performance and Diagnostics hub, and it is opened by clicking on “Performance and Diagnostics” from the Debug or Analyze menu.
Launching the Performance and Diagnostics hub from the Debug Menu
After you click on this you will be brought to the Performance and Diagnostics hub where you can select your profiling target and choose from a set of available tools. A screenshot of the hub when a C#/XAML Windows Store app project is open is shown below.
The Performance and Diagnostics hub when a C#/XAML application is opened
Since we have the target and available tools on the same screen, we are able to show you the tools that apply to your profiling target. Some of the tools can be combined, allowing you to check more than one box at a time. This design takes the guess work out of choosing which profiling tools are applicable. We also show you a list of recently opened profiling sessions on the left side of the hub so that you can easily get back to data that you collected previously. Next let’s see what the possible Analysis Targets are.
By default the target application will be your startup project. You can also change the profiling target to an already installed or running app, even when there is no solution loaded in Visual Studio!
Changing your analysis target in the Performance and Diagnostics hub
The full set of targets currently available in the hub are:
As mentioned previously, the list of tools available will automatically update as you change your profiling target. If you want to profile an app on a remote machine, you will need to set up remote debugging on the remote machine and then choose “Remote Machine” from the running or installed app picker.
Selecting a Remote Machine from the installed app picker
Next, let’s explore what the available tools are.
In this release we have not only moved our existing profiling tools into the hub, but also added some new ones along the way! Among the various profiling targets, you will see the following tools available in Visual Studio 2013:
Many of the tools listed above can be combined by checking more than one box before you click Start so that you can cross-correlate data and diagnose performance issues more effectively. Additionally, the following tools which existed in VS 2012 are also available from the hub:
When you are happy with your choice of target and profiling tools, you can simply hit “Start” to start a profiling session.
As you may have noticed, we have added many new features and new profiling tools! We have been able to add these tools so quickly through collaboration across many teams within Microsoft that reuse a common set of services and UI capabilities that our team builds. This includes the hub launch page with target and tool selection services that allow tools to work with various application types. We also provide underlying services such as persisting diagnostics files, ETW data collection and parsing, symbol resolution, and communication with remote machines.
These common services will allow us to continuously deliver great new profiling tools and someday we may open this up to external tools developers – let us know if you have a tool you’d like to see in the Performance and Diagnostics hub.
Beyond the links I shared above, for a recorded walkthroughs be sure to check out some of the following videos:
We are very excited about how these tools will help you build better applications with Visual Studio, and we will continue to deliver new profiling tools while improving existing ones. We encourage you to try out these tools, and send your questions and feedback to us on the Visual Studio Diagnostics forum, on UserVoice, and Send a smile/frown.
Sounds great! I only hope this will work as good as it sounds. And that it does not have any limitations.
We Have , awesome future , Waiting for Final :)
In the future will you support profiling applications that aren't windows store applications?
@Yosy: thanks for your comment!
I have a problem on profiling tool. I follow the link "DEBUG->Performance and Diagnostics->Choose Target->Start Up Project" . But I found Start Up Project is always disable in my project. Could you help me out why is it so happen? Thanks in advance
@Sunny: if startup project is grayed out it likely means that the Performance and Diagnostics hub does not support your project type. What is your startup project set to before you go to Debug -> Performance and Diagnostics?
Update 3 (RC and now RTM) both had cpu usage listed as unavailable for my WPF app.
Which is weird, because this update specifically says it supports WPF & win32 apps, whch both is what my app is.
I hope its just a bug and I can find a fix.
Is there any tool/aid available for doing perf analysis of WCF services?
@Sean: if you are on Windows 7 the CPU Usage tool will not be available because it depends on new capabilities that are only available in Windows 8.1. If you are on Windows 8.1 and are not seeing the CPU Usage tool please use the feedback button in the top right-hand corner of Visual Studio to report a bug.
@Lalit: you an use the Performance Wizard in the Performance and Diagnostics hub to do performance analysis WCF services. If you want to profile and invoke your WCF service with the WCF test client, you will need to run the wcf test client manually since the performance wizard will only start your service using Internet Explorer. Set the startup action in the performance wizard to Internet Explorer, and after profiling is started open a developer command prompt and type "wcftestclient <url to wcf service>".
Note that you may see profiling results from iexplore.exe and iisexpress.exe in the report. You can ignore any profiling results from iexplore.exe in this case.