Return to the Planet of Managed Code Bloat

I just updated my post The Bloated World of Managed Code with baseline memory footprints for Console and Winforms apps in .NET 2.0.


This is a companion discussion topic for the original blog entry at: http://www.codinghorror.com/blog/2006/01/return-to-the-planet-of-managed-code-bloat.html

“Managed code is great. But a world where everything is managed code-- including the operating system and essential utilities-- is still pretty far off.”

You’re probably right. And this isn’t helped by the problem that end-users don’t care whether their code is managed or not. Nor should they care if it’s written in assembler, Java, Python, or C#. For every developer bloviating and chattering excitedly about the promise of managed code (and make no mistake, it’s going to be great when we eventually go managed all the way), there’s ten end-users who couldn’t care less. They just want things to work.

Put another way, nobody really needs Notepad.NET with all its bells and whistles when plain old Start Run “notepad” still works just fine.

Yeah, but users also want to stop hearing about vulnerabilities caused by buffer overruns and underruns and sideruns.

It’s not impossible with managed code, but much more unlikely. I think any one of us could write a simple little video card control center that would be snappy, performant, and nearly indistinguishable from unmanaged code.

Save the unmanaged code for device drivers and such I say. Microsoft will invest heavily in perf tuning managed code, and we’ll get the benefits for free.

when plain old Start Run “notepad” still works just fine.

For very small values of “fine”, perhaps…

http://www.codinghorror.com/blog/archives/000441.html

Save the unmanaged code for device drivers and such I say

I just wonder if the ATI developers had created a the Catalyst Control Center in C++, would it have been this slow to launch and use?

Here is some discussion about the unmanaged DVD Maker in Vista:
a href="http://blogs.msdn.com/ericgu/archive/2006/01/09/510833.aspx"http://blogs.msdn.com/ericgu/archive/2006/01/09/510833.aspx/a

I guess Eric isn’t allowed to really tell us why it’s unmanaged, but we all have an idea.

Uggh… I was thinking that the next video card I bought would be from ATI. I am sick and tired of nVidia’s belief that their crappy drivers should be taking over my entire machine. It’s a video driver for pete’s sake!

But now that you tell me ATI pulled this kind of stunt, maybe I’m better off sticking with nVidia. How stupid do these people have to be? Requiring .NET for a video driver? Especially when .NET typically ISN’T installed on the OS by the time you install the video driver. What do they do then?

I’m a huge fan of .NET and even Java for enterprise applications. But it is becoming quite apparent to me that .NET isn’t the technology that you use for consumer applets like this.

matt,

ATI’s Control Centre is an optional add-on to the standard driver which already has the usual dozens of settings.

Perhaps if you have spec-i-a-l-i-st needs for gaming or CAD or some such you might need it, but I am happily using my computer for DVD playback, calibrated photo editing and 3D rendering and have so far had no need of it.

BTW Jeff: You have a ‘questionable content’ filter that rejects the word “spec-i-a-l-i-st”.

As of the latest Catalyst driver version, the Control Center is mandatory, as they removed the probably-written-in-C++ control applet.

I’ve been avoiding the CC like the plague, but now it’s on machine, sucking about 14 megs of memory for no real reason.

And why does it launch so many CLI.exe instances?

Oh, and it doesn’t work with .NET 2.0.

I love this topic. I was going to post something like this on my own Blog.

I cannot agree more with this topic. The ATI catalyst app is HORRIBLE. It takes a good 2 minutes for that POS to come up on my 1gb AMD64 3200 box. It uses memory like its going out of style!

Is this what all managed apps are like?

One thing that always seems to be missed out of the “Microsoft using .NET internally” lists is the Windows Media Center shell “ehome.exe” which is currently .NET 1.1. The first version (MCE 2004) was .NET 1.0. I’m sure all the swishy graphics etc are probably C++ GDI code but the main engine is .NET. In fact people are hacking ehome using ILASM/ILDASM in order to get the Media Center shell running on Windows XP Pro or Windows Server 2003. See: a href="http://www.thegreenbutton.com/community/shwmessage.aspx?ForumID=27MessageID=78447"http://www.thegreenbutton.com/community/shwmessage.aspx?ForumID=27MessageID=78447/a

Is this what all managed apps are like?

Nope. Discreet Cleaner XL is managed code, loads very quickly and uses (relatively) little memory.

I just think the ATI guys don’t know what the hell they’re doing.

“Oh, and it doesn’t work with .NET 2.0.”

This seems to be one of the biggest issues. I wonder if Microsoft has determined that this is a deal breaker for using .NET within key components of the Vista OS?

I don’t think that you can get around this issue when dealing with managed environments. Java suffers from this problem as well. In a recent post to a popular Java forum, someone asked “how many different versions of the Java VM do you have on your machine?”. The typical response was around 5 or more. This does not include Java appications that attempt to package a specific version of the VM locally into the application directory.

I wonder if .NET will suffer the same fate? Will every user eventually have version 1.1, 2.0, 2.1, 2.2, 3.0, 3.1, and 4.0 of the .NET framework installed on their machines?

Offhand, I’m going to guess the only reason it doesn’t work with 2.0 is that they didn’t add a .config file saying it’s allowed to try. 2.0 is supposed to be fully backwards-compatible…

I’m withdrawing my earlier comments having just discovered that with the latest version of Catalyst the new control centre is no longer an optional extra (they obviously kept the old dialogs in parallel for a while before dropping them).

Yes, this is HORRIBLE. The whole interface design is amateurish, the programmer equivalent of a child with writing word documents with too many fonts, or Homer Simpson’s web page. Bad graphics used to excess, even in the selection tree.

Particularly careless is stretching the standard display dialog to another inch of blank space making the layout of all the other panes ugly just to add a single button. Then in the control centre, they skimp on the selection tree, making it half the width it needs to be so you have to keep scrolling the tree within a peep hole.

Add to this the nonstandard controls, it’s a UI disaster.

And that’s before you even get to the performance issues.

This is a good example of what you should not do to your customers - suddenly drop your standards so that the criteria they used to choose your product are no longer valid. Talk about having the rug pulled out from under you.

One of the minor details I really hate is the insistance that the phrase ATI CATALYST® has to be shoved in your face every where you look. In the feedback, I explained to them that I did not pay thousands for a computer just to admire their trademark. In pratical terms, it is like flashing HTML elements - it makes it hard to scan a context menu for what you are looking for when one item is always shouting “look at me!”.

Fortunately, not being a gamer, I can go back to an earlier version.

On the subject of managed code taking over - it has been said that .NET need not be used for everything, yet, the disturbing thought is that MS does not have a product for creating unmanaged code any more (unless C++.NET can do it, but that isn’t my field).

Paul, all recent versions of Visual Studio (2002, 2003, 2005) continue to ship with the Microsoft Visual C++ compiler which continues to produce regular, unmanaged machine code. Only unmanged code generation for Visual Basic was discontinued.

I’m really glad I found this thread (and thanks to everyone who contributed a comment). I’ve been reconfiguring, deleting old programs, optimizing, etc. and only NOW do I know what’s causing my PC to boot so slowly. It’s the danged Catalyst app. Everything comes up in under a minute, desktop, quicklaunch bar, system tray, then the hard drive runs for another 1 or 2 minutes. I can’t really launch an application until the HD activity settles down. Sure enough, lots of CLI.EXE activity. Couple that with McAfee and they’ve reduced the value of my computer by several hundred bucks! I was ready to go out and get another processor and MB. Nope. Gonna get a new video card instead. Bye Bye ATI…

Ah, I meant to update this thread, too.

There is a way to avoid the bloated Catalyst .NET control panel.

  1. Either disable Catalyst at startup, or only install the ‘minimal’ driver set from ATI which does not include it.

  2. Download the ATI Tray Tools:

http://downloads.guru3d.com/download.php?det=733

Now you can control all your video card settings from a nice, lightweight C++ app again. The only settings I ever need to tweak are the AA (anti-aliasing) and AF (anisotropic filtering) related ones.

I cannot even run the control center on my Athlon64 3000+ @ 2600MHz it jams up my startup and everything else including Antivirus realtime scanning WILL NOT load at all because of it. This is without a doubt the worst software I have ever seen in my life! I refuse to install it period! It slows down 3DMark scores by about 10% as well but this could be because of the drivers themselves.

5.9 Catalyst for XP 32-bit
5.11 for x64

These are the last drivers that install with Control Panel and are far superior to anything those kids at ATI are pumping out now, I guess ATI knows they’re garbage but are commited to them because of the millions of dollars it cost them to get to the level of crappiness that they’re at today. Poor poor ATI.

UPDATE

I installed the Cat drivers(BETA)on Vista RC1, the total size of the control center is 80.3mb download and 360+mb’s installed, the software cannot even recognize my X800 Pro! Impossible to run any 3D apps without complete screen artifacts! WAY TO GO ATI!!! good job!

Thanks goodness that I find this page through Google; I was close to format my handdisk and re-install the Win2000 on my PC.

I am a company executive and I always need to switch around in different video modes for doing business presentations. The Catalyst Control Center is a piece of crap. I was very happy with the quick response of the previous ATI control application, until I had had to upgrade the ATI video driver for a new application.