BT

Facilitating the Spread of Knowledge and Innovation in Professional Software Development

Write for InfoQ

Topics

Choose your language

InfoQ Homepage News Improving Responsiveness in Visual Studio 2012

Improving Responsiveness in Visual Studio 2012

This item in japanese

A recent article by Microsoft Development Manager Eric Knox provides an in-depth look at the internal improvements being made to the editing performance of VS2012. Knox's team has evolved their approach to use more than PerfWatson, and has incorporated the use of a new tool called Immediate Delay Tracker (IDT).

PerfWatson works by collecting "a mini heap dump which allows [Microsoft] to [determine] what Visual Studio code is running at a particular point during the day". As engineers want to monitor VS' performance on a per-keystroke basis, they devised IDT which is "a more fine-grained measurement system" that utilizes Event Tracing for Windows (ETW).

ETW is a general-purpose, high-speed tracing facility provided by the operating system. Using a buffering and logging mechanism implemented in the kernel, ETW provides a tracing mechanism for events raised by both user-mode applications and kernel-mode device drivers. Additionally, ETW gives you the ability to enable and disable logging dynamically, making it easy to perform detailed tracing in production environments without requiring reboots or application restarts.

The advantage of the ETW-based approach according to Knox is that "instead of a single stack like PerfWatson, [the team] can get a call stack every millisecond and then analyze the collection of stacks in aggregate rather than just a single point in time." Engineers working on VS can then obtain useful performance information while minimizing the observer effect. Knox's team monitored internal VS users at Microsoft, and after implementing corrections documented the following performance gains:

 

Visual Studio 2010

Current

C#

 

 

Keys above 50ms

15.05%

7.87%

Keys above 100ms

10.26%

0.62%

Keys above 200ms

1.50%

0.06%

C++

 

Keys above 50ms

11.85%

0.48%

Keys above 100ms

7.88%

0.20%

Keys above 200ms

6.85%

0.07%

VB

 

 

Keys above 50ms

0.83%

0.60%

Keys above 100ms

0.13%

0.06%

Keys above 200ms

0.06%

0.06%

Now that VS 2012 RC is available, have readers can use the product for themselves and determine how visible these changes are.

Rate this Article

Adoption
Style

BT