Where Have All The Cycles Gone?
Mai writes "Computers are getting faster all the time, or so they tell us. But, in fact, the user experience of performance hasn't improved much over the past 15 years. This article takes a look at where all the precious processor time and memory are going."
I used to be able to fit the system, the finder, mac write and 3 X 8K docs on a floppy. Now I could barely fit a word document.
This is totally insecure, but very convenient.
'memory is cheap'
'disks are fast'
'processors are fast'
nobody cares about optimizing code anymore.
"I'd rather be a lightning rod than a seismometer." -Ken Kesey
But, in fact, the user experience of performance hasn't improved much over the past 15 years
.. for DOS) to the KDE/ Gnome file managers (Ok MC looks the same still :) ). :) ) .
Now that really depends on what you would call 'user experience'.
Compare a file manager 15 years ols (PC Tools had one right
Compare pine to Thunderbird.(though I still use pine on my old laptop
Compare Usenet clients or say Lynx to Firefox,
Compare Doom 3 to Pac Man
Comapre the fancy graphics on OS X to Win 3.1 or whatever OS Mac had then
No Sirrr I say the user experience of performance HAS changed. Maybe not directly proportional to the Proceessor speed increase (due to code bloat ?) but still its much much better. Thats my $0.02 .
I think that the article writer just realized what a lot of computer buyers don't : CPU speed != more performance, ESPECIALLY when you look at graphical display and Word processing (at least he didn't include "web surfing speed").
Where are my CPU cycles and memory going on my AMD 3500+ and 1Gig 400MHz DDR Ram? Most of the time, nowhere. 1% CPU usage, commit charge 150 megs / 1 gig. Honestly, if you don't use CPU intensive apps, there's a limit to the 'improvement' you can expect in 'graphical display' and 'word processing' speed. But sales rep will tell you otherwise, for sure.
Eureka Science News - automatically updated
Generally (at least on my less used windows box) i have most of the following running most of the time....
1) VoIP Client
2) Messaging Client
3) Word Processor
4) Multiple Web Browsers
5) Email Client
6) Probably some graphics or photo editing tool
7) Something playing music
In addition there are various other background processes like desktop indexing, things watching for my digital camera being plugged in, smart start stuff...
Linux is probably worse since i keep Apache and often Tomcat running all the time.
Back in the day, this was never how it was done. You'd optimize config.sys to get the absolute max amount of free conventional memory.
Multitasking has improved to the point that many users probably run close to 100 processes at any point in time..
prstat here says i'm on a system with
Total: 3741 processes, 6739 lwps
Fair enough it's a shared box, but that scale was impossible a decade ago.
So Apple is bucking the trend, or their first versions of OS X were an inefficient piece of crap and they are just now optomizing it.
Do you have any evidence whatsoever for this? It's not a good idea, and iTunes uses a constant amount of CPU while playing music, indicating a normal buffered, streaming decompression scheme.
Mod down posts with a "Free Mac Mini/iPod" sig, they're spam!
Is that it is (like nearly every other system out there) an economical system; it's all about supply and demand.
I this case there's a supply of plenty of clocks. There's an (existing) demand for a certain level of performance; if the supply outstrips that demand, then the supply is devalued, and consequently the programmers don't spend as much time conserving that resource.
Or to put it another way, programs behave like a gas with respect to responsiveness and user expectation; they expand to fill the available space.
Or to reword it another way (quoting from the article): computers are, in fact, doing more than they used to. A lot of the things computers do are fairly subtle, happening beneath the radar of a user's perception. Many functions are automatic and, as discussed in last month's column, you could probably do without some of them.
I am disrespectful to dirt! Can you see that I am serious?!
You want cross platform, you want platform support, so get used to VMs and WRAPPER code.
You want language interop, you have to live with COM, DCOM, CORBA, XML Web services, SOAP, UNO. If not, then go back to your Amstrad or Sinclair.
FFS you cant have your cake and eat it.
I derive utility from them and my hardware can handle it. This is not bloat.
More than just code bloat: disk access speeds combined with the increase in size of everything (for "richer content", "more features", etc).
With a lot more files, a lot larger files, etc, your performance at file access (and disk caching) will decrease unless you can increase the throughput and decrease the seek time/latency of data access from the disk.
Back in 1998, most PCs were shipping with 5400 RPM hard drives; I bought a used 10k rpm drive for 200$. Nowadays? Most PCs are still shipping with 5,400 RPM drives, and 10k RPM is still good performance (although not the best out there - although, mine back then wasn't top of the line either).
Disk sizes are scaling up wonderfully. Disk access speeds are not. The same holds true with RAM.
Dear Lord: One of your creatures may be hurt tonight. Please let it be the other creature.
A lot of people like to wax nostalgic about the good ol' days when things were faster, all the while ignoring the featuresets implemented today. The fact is, yesteryear's code wasn't as advanced or featured. A word processor from ten years ago may have been pretty damned fast, but today's word processors load dictionaries to spellcheck your document and grammar as you type and import graphics.
Windows 3.1 may have been incredibly snappy, but it also lacked propery memory protection, wasn't 32-bit addressed, and didn't provide an intuitive interface. Also, more advanced typography (anti-aliasing) and filesystem indexing services like Spotlight come into play, as well as all the important system daemons running in the background that are now considered stock.
It's not that things aren't getting any faster because of bloat. It's because as power increases, the ability to add new modern features to the original experience is utilizing that extra power, just as it should.
The bottom line is that optimization is rarely the best thing a developer can be doing with his time. There's a lot more you can do with "a day" than tweak a poorly thought out algorithm. By all means optimize if your program is as slow as molasses and your profiling shows that a particular section of your code is at fault. Otherwise, good programming practice is to think about other things.
Nope, wrong. Task manager reports working set, which is whatever memory windows THINKS the process is using at the moment.
Reporting the total memory allocated by an app is meaningless, because much of that memory includes things like memory-mapping DLLs that are only loaded once, and shared amongst all processes using them.
Windows constantly trims pages from the working set of each process that haven't been accessed in a while and pages these out to disk.
When you click the minimize button windows assumes that the app (or at least large parts of it) are going to be inactive for a while, so it tries to remove as many pages from the working set as possible - hugely reducing the "memory usage" reported in task manager. Sometimes it is a little too agressive in trimming pages from the working set, and the "memory usage" immediately climbs a little again, as the app accesses memory pages that windows thought it could page out.
Try it with an app like MS Word that has background threads that constantly check spelling and stuff, and you'll see the working set goes up for a few seconds after you minimize it.
I don't know about you guys, but back when I was running linux on a 33 MHz 80386, my kernel compiles went overnight. Now they take, oh, ten minutes.
I'd say that's an improvement, wouldn't you?
nobody cares about optimizing code anymore.
You can optimize in many different ways: for run-time performance, maintainability, extendibility, usability, compatibility, and probably a bunch of other ways I can't think of just now.
Many of these are at odds with each other. And since computers are getting faster, I think it's perfectly reasonable to start trading off run-time performance with some of these other things.
Accountability on the heads of the powerful.
Power in the hands of the accountable.