System Requirements: when the plural of anecdote really is data

29 April 2009

I had an interesting email assigned to me today, one that posed a question I hadn't come across before.

This requires some explanation, not the bit where I hadn't heard the question before, but the reference to assignment of emails. We not only have our own email addresses at DevExpress (mine is julianb@devexpress.com, in case you'd forgotten), but we have generic email addresses too:

What is not known is that messages to the first two are diverted into a big email database, mainly because people sometimes send sales emails to info, and presales emails to clientservices. We don't want to act all snotty, "Hey, send your purchase email to clientservices, we at info are all about presales questions," because quite honestly we'd be beaten about the head by everyone. So Azret has written an awesome WinForms ClickOnce email application (affectionately known as DXMail) — using our controls, of course — and someone goes through the pool of unanswered emails and assigns them to individual people, generally the person best able to answer the question. This email application is in the process of being merged with our support center application too, so that support questions that come to one of these two email addresses will get routed properly. (I'd show you an image of the app, but it would be full of fuzzed-out private information.)

Anyway, I got assigned this particular email, a presales question, and the author wanted to know the minimum system requirements for a WinForms application written with our controls, or, failing that, at least the recommended requirements, especially with regard to RAM. Yep, a perfectly valid question and the old CTO was stumped: we don't have any data on this. Obviously for the OS and hardware requirements I can just point to whatever .NET requires, but what about RAM size?

So I went to MSDN to find out the system requirements for .NET. For version 3.5, the minimum RAM requirements are, wait for it, 96MB. Good grief. The recommended amount is 256MB. Yeah, right. I have absolutely no idea how that number was arrived at. Did they write an exemplar application with .NET and then run it on these RAM-limited machines? Don't know, but at least I have the official recommended amount of RAM to run a .NET application.

But what about our stuff? How much would that add to the equation? OK, now I need a reference application that uses our controls. Bingo, DXMail. Now I need a limited machine. The one I came up with was my Dell Mini 9 netbook, with its cavernous 1GB of RAM (an eighth of its drive space, I'll have you know — you don't exactly want to hibernate this baby). Handily, DXMail is ClickOnce so I could easily install it (like all small netbooks, there's no DVD drive to install from). So I logged onto our servers through VPN and started the download to install it. After that, I ran the app, and it came up and emails were shown and I could reply to them, etc, etc. Gobsmacked, I was.

But what had I really shown? (Apart from the ability to do another chunk of my work on a very small screen in Starbucks, that is.) Sure, DXMail runs on a 1GB machine, but is that a recommendation? Can I derive any data from this single anecdote? For it comes to me that all I've proven is that this one .NET application whose data is at the end of a broadband pipe works on my netbook. What if the data were all on the machine itself? What if the grid is being used and server mode is off so all data is downloaded to the grid for display? DXMail "ships" with skins, but would their exclusion make any difference? And so on.

In the end, the only conclusion I could come up with was the requirements for our controls can only be understood in reference to the application written to use those controls. Even further, the RAM requirements would depend on what the end-user would be prepared to suffer performance-wise. Yeah, I'm sure DXMail would work in 256MB of RAM by swapping the heck out of stuff, but would I be prepared to use it under those circumstances? (Another anecdote: Task Manager reports that DXMail is using 40MB of memory, so maybe 256MB would indeed be fine.)

I also considered whether we could derive any data ourselves rather than rely on the anecdotal information from yours truly, say by writing a reference application and running it as part of our testing. But again I'm led to the conclusion that any data we'd get would be trivial at best or too vague at worst: "We recommend at least 512MB of RAM to run a well-written WinForms application using the majority of our controls." Notice all the wishy-washy caveats and those hedging terms. I really don't think we'd get anything better than that without getting bogged down in definitions of "run" and "well-written" and "majority". So in this case, I think anecdotes are about as good a set of data as we can manage.

Oh, and we recommend at least 512MB of RAM to run a well-written WinForms application using the majority of our controls. Smile

7 comment(s)
Michael Proctor [DX-Squad]

LOL, Julien maybe one too many coffees at Starbucks?

"with its cavernous 1MB of RAM"

albeit that is double what my 286 had I do think as you mention further in the document that you meant to use a G instead of the M :) At least we are past the days of K.

Interesting article and spot on with how long is a piece of string :) if you have a xtraribbonform that displays a scheduler, grid with many detail grids, charts with the halloween skin I am sure it will require alot more than an application running a single grid with a chart.

But generally speaking I wouldn't run .NET on a system with less than 1gb of RAM and lets face it most machines still out there usually meet this requirement and if not should be very close to replacement :)

29 April, 2009
Julian Bucknall (DevExpress)

Michael: Nice catch. I check all the spelling this time but miss the abbreviation... Sigh.

Cheers, Julian

30 April, 2009
Jim Clay

Our in house app that has over 100 XPO objects and with lots of heavy data input and multiple grids on forms seems to work fine on XP Pro Machines with 1Gb.  Just the nature of things, that is the bare minimum I would consider using anymore especially with AntiVirus (they're all hogs), Outlook (another hog) with a custom add-in, and IE always running as well.

In addition, the question is minimum processing power.

And you need to consider all this based on which version of Windows (XP or Vista).

The minimums listed my MS are a joke, I wish they would make them realistic.

30 April, 2009
Steve Sharkey

We recently upgraded a piece of software (externally provided) for a new version (the old one beccomes unsupported soon). The new version is a WPF application. During the project to do the upgrade an assumption was made that "it will be fine". Not satisfied I had it tested...

We had some single core machines running 512MB RAM and it was like a slide show. Someone pointed out it ran fine on a P4 with 1GB RAM - sure enough it did BUT not in the way that the application is used in reality (an access db is always open to hook into other information, a spreadsheet, email and a web browser. Minimum spec - dual core CPU and 2GB ram (oh and 19" monitor is really the least you would want).

I know replacing lots of machines is expensive but in this case the loss of productivity for what was generally 1GB RAM and a new screen (say £140) and at worst a new machne (£340) really means the sums just don't add up for the economising route - especially when money can be found quite easily for far more frivolous things...

30 April, 2009
Brendon Muck [DevExpress MVP]

"Oh, and we recommend at least 512MB of RAM to run a well-written WinForms application using the majority of our controls."

512MB for a "well-written" app? Looks like I'll be recommending that my users have a terabyte of ram installed.

30 April, 2009
Scott Blood

I have to laugh at brendons little comment there.

I would love to know what a well written app is.  Whats good for one person isnt good for another.

I can look through millions of lines of source code here and say yeah that could of been done better or there is a quicker way of doing that, but does that result in a well written application.

Fair enough any application that has constant memory leaks and dosn't correctly clean up behind itself is bad, but i thought that .net did most of this stuff for you.

Scott

1 May, 2009
Julian Bucknall (DevExpress)

Scott: If pushed, I couldn't define "well-written app" and I'm the one who wrote those words. I was, in essence, being a little facetious, as was Brendon.

However, there was one project I was on in the past where I was asked to evaluate a just-completed C#/.NET solution. Using profilers, etc, my team was able to identify badly-written areas of the code, which, when rewritten, used half as much memory and executed twice as quickly (an example: the original programmer had converted a C++ routine he already had into unsafe C# code using pinned memory). That would, as an example, mean the difference between 1GB and 512MB of required RAM, yet the remainder of the code was still pretty badly written.

Cheers, Julian

1 May, 2009

Please login or register to post comments.