Performance Week on the Windows Forms Team

We recently took a break from normal bug fixing to focus on peformance issues in Windows Forms. Of course, we track and work on performance all the time (I have a full-time developer exclusively dedicated to performance issues) but you can get some real value by focusing people on it specifically for some amount of time. I actually had a few goals for this:

1) Help re-train the developers on some of the new tools and techniques for diagnosing and resoving performance isues

2) Cover control-specific scenarios. We have a set of mainline scenarios that we track at the division level like "launch Windows Forms Application" or "Simple Windows Forms Application Working Set", but they often miss some things like "add 100,000 items to a listview, a combobox, and a treeview" or "set up a form, launch it, and then resize the heck out of it until your hand gets tired from moving the mouse all over the place". It's these types of things that often impact application usage the most.

3) Nail the low-hanging fruit. Basically it had been a while since we'd done something like this so I expected there to be a bunch of things that we could find and fix with a small amount of risk and effort. I wanted to make sure we took advantage of this.

And it turned out to be very successful. We had each developer sit down and brainstorm some scenarios they wanted to make sure performed well. After they did that they tried the scenarios and took baseline timings, then filed bugs on the ones they didn't think met expecations.

  • A100x improvement in adding items to a sorted ComboBox
  • A 50% improvement in the time it takes to copy/paste controls in the designer
  • A 25-35% improvement in the time it takes to add a control to the designer
  • Improvements of drawing of snaplines, SplitContainer, and ToolStrips, eliminating flicker when redrawing.
  • Major improvements in the speed of form layout (especially during resize) and general understanding of the layout issues that can contribute to poor performance in applications. We'll make sure to get these out as guidelines so the community can benefit from them.
  • 54 performance bugs were opened, 15 of which will fixed and 41 were at least investigated.

The development team really got into it and had a lot of fun working through the issues they found. This work was done in the RTM fork so it unfortunately won't be in the Beta 2 bits, but I guess that gives you one more reason to look forward to the final RTM bits!

Print | posted @ Monday, March 14, 2005 6:47 PM

Comments have been closed on this topic.