Performance in Windows

I downloaded a demo of a freeware Ribbon Control from Code Project the other day and the experience was interesting.

I develop software on my main PC, which is a number of years old. It has a 2.5 ghz Celeron CPU, NVidia Graphics card, 768 meg Ram and is running Windows XP Home (sp2). In my opinion this is a decent machine. While I have two other PC’s, one with Windows Vista Home and the other with Windows 7 (64 bit), I prefer to work on my XP machine.

I ran the demo I mentioned and while impressive in appearance, it ran so slow (mouse was sluggish) that it was disappointing. I decided to check the app using the Depends utility to see what API’s the app was calling and it turns out it was a dot.net app, so it was using the dot.net runtime.

While the newer technologies Microsoft provides for software development are impressive, it amazes me that performance is at the bottom of the list of features.  Even some years ago, when I purchased Visual Basic 5.0 Pro, it was interesting to note that the software license prohibited publishing any benchmarks of the software. In the old days (DOS), it was common for compiler makers to tout benchmarks in their advertising. But now, it appears few even care any more.

Why ?

In my opinion it is a mindset. In the old days programmers cared about efficiently using memory, but today no one cares because as they say “computers have so much memory today, it doesn’t matter any more”. In the old days programmers cared about the raw speed of their applications, but today no one cares because as they say “computers are so fast today it doesn’t really matter”. Can you see a pattern here ?

Computer hardware has improved so rapidly that few care any more about performance any more.

But …

A recent situation has brought performance back into view and software developers are paying the price for such attitudes. Tablet PC’s for one has brought hardware performance and software performance back into view. Intel created the Atom CPU for netbooks and also for Tablets (also the new Sandy Bridge CPU’s). These are powerful CPU’s and I mean powerful, but sadly software developers are calling them “slow” and “poor in performance”. Why ?

Not because they are all that bad, but because the bad attitudes towards software performance are coming back to haunt software developers. You see, netbooks and tablets have three issues to deal with that normal PC’s do not. The first is size. Faster CPU’s, bigger harddrives, more memory require more space. Netbooks and Tablet PC’s need to be small as possible, so they have to use less in the hardware area. Second is power consumption. Desktop PC’s can eat power all they want, but Netbooks and Tablet PC’s need to run off batteries so they need to conserve power. This means smaller and less power hungry hardware is required. Third, Netbooks and Tablet PC’s need to have lower cost parts, so they are affordable. People are willing to pay more for a desktop PC, since it is bigger and better and does more. People don’t want to pay twice the price for a Tablet PC, which has less memory, less speed, less screen size and less data storage than their desktop PC.

Because new technologies are becoming so popular (Netbooks, Tablets), software developers are stuck trying to find ways to get their software to run half way decently on these new devices, but they can’t, so in typical programmer fashion, they simply blame the hardware developers and say its their fault.

This problem has really hurt Microsoft in my opinion, since Microsoft is way behind in offering Tablet PC’s running Windows 7. Everybody wants an IPad and there are few Windows based Tablet PC’s coming to market right now. Have you noticed the hardware makers and the Tablet PC’s they are currently offering with Windows 7 on them ? They are not targeting the average consumer (you and me). They are targeting business and corporate markets. Why ? Because they can’t get the price of Tablets down enough for the average person, so a decent tablet which will run Windows 7, requires a more expensive Tablet and only businesses are willing to pay premium dollars for them right now.

The fault in my opinion falls on software developers and not hardware developers. Yes, programmers have had it too easy for too long and now they are paying the price. Even Microsoft is paying the price now.

I get picked on (when visiting programming forums) by other programmers for developing software for legacy operating systems (ie. Windows 95,98,ME) and for using an XP system for development.  Most programmers in my opinion use the latest PC hardware and target the latest technologies. One of the problems with this is that if you don’t make sure you do extensive testing on older PC’s, you have no idea whether your software is performing very well. When I say performance, I mean “raw speed”.

I find that it is better to develop on an “average” computer, rather than a “bleeding edge” computer, because I get immediate feedback on how my software is running. I am a programmer who concentrates on using resources efficiently. If I can write apps that fly on a 500 mhz CPU computer with as little as 256 meg ram, imagine how they will run on the latest hardware.

This is one of the goals of my development tool EZGUI 5.0. Combine it with Powerbasic (which produces lean and mean apps) and you have a development system which can run circles around others. EZGUI’s main runtime DLL has more packed in its 700 KB size DLL, than other development libraries twice the size (or more). EZGUI does not require dot.net (neither does Powerbasic), so it can be used to write applications which will run on Windows 95 to Windows 7.

Lastly, the lack of appreciation for designing software with raw speed and performance, has also hurt society because, rather than use computers for a long time, software developers (and their end users) keep requiring faster and faster computers, so more and more decent computers are ending up in landfills, consumers and businesses are wasting money, always having to “upgrade, upgrade, upgrade” to the latest technology, simply because the new software just won’t run on their perfectly good PC’s any more.

Maybe this should change. Maybe programmers should start caring again about how they write their software and the resources required to run them. Maybe programmers need to work a little harder. Now before you say it can’t be done, let me point out to you that some are already doing this. Even right now, my customers are writing software with amazing user interfaces, which can still run on legacy PC’s, which run fast on the current Windows Netbooks and Tablets and some of them even can fit their software on a floppy disk.