Visual Web Developer (Whidbey) Performance

Hello!  I've been a dev at Microsoft for eight years now, and have been working on Visual Studio for the last five or six of them.
Recently I've changed roles.  I've always worked on the web development part of Visual Studio (from Visual InterDev through Visual Web Developer) but I'm moving off the feature area and into performance.

Until recently this responsibility was spread over four people on our team, and it was one of many responsibilities for each of them.  Now virtually all the performance testing, monitoring and investigation are my responsibility.  I'm new at this; I've had a few narrow performance responsibilities and a little training in the past, but I've got a huge amount to learn and a thousand tasks to complete.  It's like heaven.  It's hard to beat getting paid to learn new skills, particularly interesting ones.  My old friend John Pence and I used to say "Always get paid for learning."  It was the company slogan of MacMan, Inc.

Let me clarify my role: my responsibilities are specific to Visual Web Developer, the development environment.  If you've downloaded VWD Express then the Project System (represented by the Solution Explorer window and a vast expanse of invisible plumbing behind it) and the ASPX document windows cover a lot of the area I'm primarily concerned with, along with a few additional areas which are harder to visualize; the Cassini-based web server which starts up when you press F5, the Build command, Publishing, Copy Web, the acts of opening and closing web sites, and basically any function which pertains to the website as a whole or the web pages within that site.  Intellisense hookup, too, although the Intellisense itself is implemented by language teams.  The Shell is the framework of Visual Studio that’s wrapped around our package; it’s the part that’s the same for C# Express and VWD Express.

I'm not involved with performance of the Shell, the ASP.Net runtime, the .Net class library, C#, VB, or SQL, but I am getting to know most of these people, so if you have comments on any of these areas I might be able to pass them on but probably won't be able to follow up on them unless they're major issues which impact the entire product.  If you're a Visual Web Developer beta user, I'd love to hear about your performance-related experiences with the beta.

For you precious beta testers (I am one of you) I've got some questions.  Please let me know:

  • Have you used other Visual Studio products for web development before?  VID, VS7, VS7.1?  How does VWD stack up performance-wise?
  • How much RAM are you using?  Are you memory bound?  What do you think the minimum RAM requirement should be?
  • Have you run into limits where performance breaks down?  Say, one or two web forms are OK, but once you hit 317...
  • Are there spots where you reach for the reset button, thinking the system is hung?  Where are those spots?
  • Most important (if you have one of these please drop what you're doing and post a reply) have you ever hit a painfully long pause right in the middle of a thought, that is, have you lost your train of thought while your hard disk flashes and you CPU moans?  Where was that point?  What do I need to know to reproduce that experience?

If you've got performance complaints with Visual Web Developer, you've found the right guy to notify.  I can't guarantee I can solve every problem of course, but I can get your problem areas on the map.  I can make sure test cases cover them.  I can assure that fixing them or shipping them becomes a conscious decision.  I know it's not always easy to tell, but these decisions aren't made lightly.  If I don't hear from our users, my focus will be directed solely by my best guesses and suggestions of our team and division.  Your input could make a big difference in the product we ship.

Published 17 August 04 09:59 by vank
Filed under:

Comments

# ShadowChaser said on August 17, 2004 10:30 AM:
I've run into a few problems with VWD Express so far:

* Windows gives me "expanding swap file" messages every so often - I have 256 megs of ram. It definately seems like a huge RAM hog! I can run all my other dev tools fine, including Visual Studio 2003 + IIS

* When the code editor "highlights" the edges of tags as bold, there is a severe slowdown. It makes editing the design of pages quite a pain. It's hard to explain what I mean.. sort of when you click inside a tag and it highlights the opening and closing tags. There is a gremlin in that code :-)

* Completely unrelated to VWD, but very performance related. In .NET 1.0/1.1, there was a *HUGE* performance issue with databinding comboboxes. Roughly 10x slower than looping through and adding them manually. In our product's application, a form with ~8 dropdowns takes 4 seconds to open. If I rip out the databinding code and manually add the items the "old school" way, it basically opens instantly. I haven't had a chance to confirm this bug in .NET 2.0 yet, I've been swamped getting ready for a release. It's a nasty bug though, and probably #1 on my all time .NET bug list.
# vank said on August 17, 2004 10:56 AM:
I've seen the expanding swap file before, too, but not for a while--it might be fixed. If I can't identify the bug associated with this I might ask for some more info on this.

I'll pass the highlighting problem onto Mike (http://weblogs.asp.net/mikhailarkhipov) Let's see what's up.

Please let me know if you get a chance to check the dropdown databinding code with ASP.Net 2.0. I'll see if I can find out more about this; I don't know the testers in this area but they'd be good to know. I'll take a look.

Thanks for your comments!
# Karl said on August 17, 2004 11:15 AM:
Congrats on the new position...

Its memory footprint is huge. i don't care..I got gigs to play with, but seconds after opening a simple project its in the 70-80 megs...

I also find opening pages for the first time is slow...if I right click on a file and hit "View Designer" it takes noticably longer the first time than subsequent times.

They are both nitpicky things..its extremely solid and fast for a beta ..but since you asked...

Karl
# vank said on August 17, 2004 11:31 AM:
I agree about the working set. Lots more on this to come...

We were just discussing the first switch to design view at a perf checkpoint yesterday. We're going to improve this, but not as much as we'd like. It's a test case I'm automating right now. Interesting you mention it. With your gigs of RAM, what kind of delay are you seeing? Does it depend on complexity?
# Jeffrey Palermo said on August 17, 2004 2:40 PM:
Whidbey IDE performance
# LeeB said on August 17, 2004 11:51 AM:
I too have noticed the expanding swap file issue - I have 1Gb RAM. If I reboot the machine and open VWD, open a project and hit F5 I will generally get a VM balloon from the task bar. Seems to only happen when Cassini is started for the first time.
# vank said on August 17, 2004 12:38 PM:
Concerning the swap file, are you by any chance running Windows 2003 Server? Now that I think of it, the only two machines I saw this on were both running W2K3S.
# vank said on August 17, 2004 1:10 PM:
ShadowChaser said:

> When the code editor "highlights" the edges of tags as bold, there is a severe slowdown

Could you post an example with a little more detail? I tired to track this down and got directed to a bug which I don't think is a match. Post a block of HTML, explain where to click and what you see. If I can't repro it here I'll try at home with Beta 1.
# Jeffrey Palermo said on August 17, 2004 5:18 PM:
Whidbey *BUILD* web performance very slow - level 100
# Jeffrey Palermo said on August 17, 2004 3:28 PM:
I hit build, and the IDE locks for about 10 seconds before anything changes. By the way, is there any way to designate more directories to dynamically compile instead of just "/Code". Why can't I have a "Foo" directory that is dynamically compiled?
# vank said on August 17, 2004 10:59 PM:
That's a good question; the original idea was that there would be a few special folders with special functions; Code, Data, Resources, Themes, etc.
You can have sub-code directories. Normally sub directories of the code directory are just compiled into the same assembly, but if you use the right incantation in web.config you can create other assemblies (which can be in other languages.) The sub-code directories must be proper sub-directories of the Code directory. This clearly isn't what you're looking for.
But wait, there's more. Things are changing. In the current builds the name has changed to Application_Code. (Ugly, no?) Maybe this will change again. The idea is that all Application_* directories will not be served up by IIS. That's an improvement; right now it's the ASP.Net ISAPI filter which protects the non-browsable directories, which is not as robust as having IIS do the enforcement. (You might stop this service to do an upgrade, for example.)
# Paul Wilson said on August 19, 2004 9:17 AM:
Great to hear the change from Code, even if it is longer -- less likely to break existing.
Anonymous comments are disabled

Search

This Blog

Syndication

Page view tracker