Getting the most out of an Atom CPU

Intel’s Atom CPU’s are by no means a powerhouse compared to many of the multicore desktop and laptop CPU’s in use today. It is a matter of compromise. The SOC (system on a chip) design of the Atom CPU’s , plainly put, is for mobile. Small size and minimal amount of power usage are the criteria. So does this make the Atom CPU’s bad ?

No !

The problem with the Atom CPU is Windows and how most software is built today.  I was writing software back in the days when the CPU’s were 1/10th the power of an Atom CPU and they could do quite a lot back then. The key is how software is created. Do you realize that Windows 95 could run on a computer with as little as 8 meg ram ? My first Windows 95 computer had a 586 CPU (a souped up 486) and 8 meg ram. Today CPU’s are measured in gigahertz, while back then CPU’s were measured in megahertz. The thing though was that back then Windows software was often written in C (not C++) and was native code (WIN32). It wasn’t easy to write software using C and the WIN32’s, but it produced fast software which had a small footprint.

Today, in my opinion, two things have contributed to bloated (and slow) software. The first is managed programming languages (aka. dot.net).  The second is the overuse of OOP (Object Oriented Programming).  If you read some of my other posts in this blog, you will see some of my thoughts (and that of others) about OOP. OOP adds a level of complexity to software, which I strongly feel makes programming harder and adds a lot of bloat to software.

What we need today, to make Atom based tablet computers look good, is better software, which runs faster and has a smaller footprint. Having used PowerBasic for about a decade now, I have been spoiled when it comes to small and fast executables.  Why do I say that ?

If you have browsed my web site, you likely know that I developed my GUI engine (EZGUI 5.0 Pro) using PowerBasic and for use with the PowerBasic compiler. Two things I have learned from building this GUI engine. (1) One can build reusable code which is small and fast using absolutely no OOP at all. The size of the EZGUI runtimes are amazingly small and I give the credit to both the PowerBasic compiler, as well as to using a procedural style of coding (no OOP). (2) Second, is that if a library can be written to be tiny, imagine how small executables can be if they reuse that library,

For example, let’s consider my freeware 3D model viewer app which I created using EZGUI 5.0 (see:  http://cwsof.com/forums/index.php?topic=266.msg2146#msg2146 ). Because the EXE uses the EZGUI runtimes, which do most of the work, how big do you think the actual app EXE is ? It is only 58 KB in size ! The app has a nice GUI with multiple controls in it, multiple OpenGL controls, can load STL 3D models and display them and can modify the 3D model in real time. Now imagine what happens if I were to write a suite of apps that all uses the same runtime. The runtime exists one time, but the apps EXE’s are all small in size (tiny actually) and share the same runtime. Is that not what code resuability is all about ?

So with the right compiler and well written libraries, developers can write powerful apps which require minimal hardware to run. Now this means a lot for something like a tablet computer, which has minimal memory, memory SSD space and a minimal CPU (to save power). So rather than blame the Atom CPU for all the problems with poorly running software, maybe the blame really should be placed on the software itself.

I think the Atom CPU is well suited to both Windows 7 and Windows 8 (desktop), as long as one writes software using a fast compiler and avoids OOP as much as possible.