Comment I'm glad that somebody else is noticing that, too! (Score 1) 544
Back in the days when processors were slow, and memory was scarce, it took 16 MB (sic) to run a full desktop. Like a word processor, a spreadsheet and a browser. 4 MB was a little tight, and 64 MB was plenty.
I used to have a notebook (a Sony Vaio) with 64 MB RAM, a 300 MHz CPU, and it ran Linux SO DARN FAST! With emacs, Applix Office, 20 windows of Netscape 4, while listening to MP3 files, a compile in the background was barely noticeable.
Today, I'm sitting in front of a multi-GB multi-GHz machine, and it's slow! This is some kind of sad, since I'd prefer a less feature rich system if I could run it on these slower machines that don't have a fan. E.g. on a NSLU2, you can't even open a web-browser. This thing has 32 MB memory while Firefox wants 250 MB. That's just too much for displaying a single web page, IMHO.
The reason for this slowdown is as follows:
1. the kernel
In the recent time, everybody is optimizing for the big-iron servers (EMC, google, whatever), and nobody is looking any more for memory consumption and latency. And while the benchmark may still look great, the system becomes clumsy, bloated and un-resonsive.
2. GCC / STL
While the original idea of C++ was to make an OO language that's backward compatible with C, the older C++ program's can't even be compiled with the newer compilers! The templates, especially those of STL and boost, go totally out of whack when it comes down to memory footprint. It might give you a few percent of speed advantage to have a custom version of each single data type, but only if you don't use it much. Otherwise it's just totally trashing the cache. Not even to start talking about XML and consorts.
And if you compile those programs, the compiler needs to compile 100eds of customized template versions in 100eds of source files, just to throw away most of this redundant work during linking. This is just a waste and it does not scale.