At Microsoft you can’t say you’re excited about anything you have to say that you’re “super excited”. I don’t know why that’s just the way it is. So, I’m happy to say that I’m super excited about the release of Beta 1 and I encourage you all to visit Jason’s blog (again) to see screen-shots and get the download info. And more importantly to actually try it out and give us feedback. Your feedback so far has made a big difference and it will continue to do so, if only because it gives me ammunition with which to beat up — err, I mean, educate — executives here in DevDiv 🙂
Right now we’re at a stage where it’s crucial to lock in the gains we have and make sure everything we do is only making things better. That means detecting any performance regressions builds, day to day, is paramount. Now I have some general advice about that, I’ve been trying to teach for year that consumption metrics are very important and often a better way to track performance even though they aren’t directly what your customers care about — this old article discussed that a bit with regard to memory use. For regression detection I think it’s even more important to focus on consumption rather than elapsed time. I was trying to explain this yesterday and I came up with this pithy quote:
“Trying to control your performance by measuring only elapsed time is kind of like trying to control your weight by measuring how much time you spend eating.”
It’s — dare I say it — super-important to use a variety of metrics and watch your overall consumption because too many extraneous, impossible to control, variables affect elapsed time run-to-run.
Now moving on to some feedback, I first wanted to thank everyone that wrote in response to my last posting and encourage you to keep giving feedback. There were a few common themes that I wanted to discuss in detail.
Add/Remove References Dialog
I’ve personally made a pitch to make this better and I expect to see it getting attention. At the very least I want the default tab changed to be a faster one. This dialog is universally despised and got more negative comments than any other feature.
Unit Tests, especially batch runs
That team is looking at larger run cases and trying to optimize the amount of data gathered versus the run speed. Hope to see some nice gains there.
General Typing speed (C#, VB, C++)
I’ve been looking at that scenario personally and with a lot of help from our languages team. There are many factors that affect speed, not the least of which is the language service that provides intellisense but there are other important factors like the raw speed of the new editor, the amount of outlining, etc.. We’ve made big improvements here since the PDC but we’re still not happy with it so we’re pushing for even more gains before we ship.
“Cat” commented that “I’d hazard that partial class support was added to C# just because of this problem.” I can assure you that that was not the case. Partial classes were added for several reasons but I would say the main one was to allow better separation of designer generated code vs. human generated code.
Silverlight and WPF tooling
Some things are already better because WPF is loaded first but other things have suffered because there were many changes in that tool suite and it’s still in need of performance work. I think you’ll find Beta1 is better than the PDC but I expect you’ll still find some areas wanting. Typing speed in XAML files was something that we were especially wanting to look at.
I really wish we could be showing you more of this in the beta it was so close to being ready but the internal version just wasn’t quite there. We’ve totally overhauled how it works, the core storage is a much simpler standards-based solution, the reader is much simplified, the first load should be vastly faster, installing new help and getting updates will be vastly faster. There’s a bit of information on April’s blog and in particular you can try out the lo-band version of online help (which I think is a lot closer to what our final look will be). I’ve been very involved in this effort and I’m especially looking forward to getting the new help technology into more people’s hands.
Patrick brought up an opportunity to improve Copy Local based on his experience. I’m hoping we can move that solution to use NTFS hard links when they are available to provide that functionality without moving so many bits. I noticed the same activity in some of our test cases — the problem is of course not unique to NUnit.
Personally I’m focused on WPF changes that will help Visual Studio — like for instance improvements in how Toolbars are arranged, and general synchronization between the UI thread and the rendering thread. Some of this work translates to gains that are helpful universally, some not so much. But I am encouraging the WPF team to read this posting and that should help too.
Lots of work is happening in this space. Customers sometimes have huge solutions and they can’t afford to wait for us to load everything before they are allowed to start working. I’m actively driving improvements in that area. I wish I could promise more but, I’m not especially merciful, I can promise that 🙂
There were several bug reports already in the feedback, I will do my best to get the right people to look at this stuff. A lot of times all I can do is shrug — it’s a big product, I know a lot of it but, even after 20 years, I don’t know it all.
I’m sorry if I didn’t respond to your particular comment, I did read every word but this posting is already too long.