Developer

Review: Visual Studio 2010 Concurrency Visualizer

Visual Studio 2010 Premium and Ultimate editions include a new profiling tool called the Concurrency Visualizer to further enhance the development and debugging experience.

Desktops and laptops today are released with multiple CPU cores. To utilize these cores, .NET developers had to write multithreaded applications that were notably more difficult to create than their single-threaded counterparts. With .NET 4, new parallel libraries make these applications easier to create.

Visual Studio 2010 Premium and Ultimate editions include a new profiling tool called the Concurrency Visualizer to further enhance the development and debugging experience.

Specifications

  • Product: Visual Studio 2010
  • Versions: 2010 Premium, 2010 Ultimate
  • Cost: $5,469 (2010 Premium), $11,899 (2010 Ultimate)
  • Supported operating systems: Windows 2003 Server, Windows XP, Windows Vista, Windows 7
  • Additional information: Product Web site

Who is the target market?

The concurrency visualization features in Visual Studio are for anyone who must use multiple cores in applications they are developing. Programs that perform heavy processing are obvious candidates for using these features. However, .NET 4 makes multithreading accessible with minor changes in code that allow for performance enhancements in applications that otherwise would not have been candidates for parallelism. The Concurrency Visualizer in Visual Studio 2010 will become more important as developers begin taking advantage of the framework.

Standout features

  • CPU Utilization View
  • Threads View
  • Cores View

What problems does it solve?

The visualizer provides three views. The first is the CPU Utilization View, which details how much processor utilization is occurring at one time. This is useful for performance tuning or parallelizing an application by searching for areas of low CPU utilization. This indicates areas of the applications that may be idling or blocking on IO operations.

Figure A

CPU Utilization View. (Click the image to enlarge.)

Besides the extra code that had to be written before .NET 4, multithreaded applications were considered difficult to write because they were difficult to troubleshoot when threads became locked. The Threads View attempts to solve some of these issues by providing information on blocked threads such as the blocking API, inter-thread dependencies, the current call stack, and many other details. The Threads View is quite extensive and will prove most useful for troubleshooting a multithreaded application.

Figure B

Threads View. (Click the image to enlarge.)

The Cores View provides detailed information on which threads in the application are running on which CPU cores, and how often they switch between cores. This view is considered to be informational, but core context-switching is expensive. Action can be taken to reduce context-switching by reducing thread affinity.

Figure C

Cores View. (Click the image to enlarge.)

What's wrong?

The Concurrency Visualizer is not a magic wand; the feature provides information to troubleshoot multithreaded applications, but it cannot solve problems for you. The visualizer is a great addition to Visual Studio, though there is room for improvement. Intel has a product that plugs into Visual Studio for C++ developer that provides more features, but at the cost of flexibility. There will likely be new visualizers released through the Online Gallery to enhance the built-in visualizer.

Since Concurrency Visualizer is a profiling tool, it is only available with the Premium and Ultimate editions of Visual Studio.

Competitive product

Bottom line for business

Computers are adding more cores rather than speed, and parallelism is a first-class citizen in .NET 4. Concurrency will become more important in the coming years for developing powerful, responsive applications. Developers need the tools to troubleshoot issues that may arise while programming in a decidedly more complex environment. Fortunately, the necessary functionality is built into Visual Studio 2010.

Even if you don't take advantage of the new libraries, the Concurrency Visualizer is a profiling tool that will provide information about any multithreaded application. The troubleshooting time you'll save because you used the tool is a good reason to upgrade.

More about Visual Studio 2010 on TechRepublic

Get weekly development tips in your inbox Keep your developer skills sharp by signing up for TechRepublic's free Web Developer newsletter, delivered each Tuesday. Automatically subscribe today!

Editor's Picks

Free Newsletters, In your Inbox