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."
Mr. Seebach points out that "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."
This recalls an analogy drawn by a recent Economist article. Unlike most automobile analogies popular among Slashbots, this one is actually rather appropriate: "By the 1930s, ... the car had become more user-friendly and ready for the mass market. ... [T]he makers' increasing skill at hiding the technology from drivers ... meant that cars got hugely more complex on the inside, because most of the tasks that had previously been carried out by drivers now had to be done automatically. This presented drivers with a radically simplified surface, or 'interface' in today's jargon."
Given this lesson drawn from history, I disagree with Seebach's conclusion that "the worst is probably over" in terms of code bloat and complexity. Computers still have a long way to go before they can approach the ease of use and stability we demand of every other consumer appliance in our lives.
The aforementioned article requires a paid subscription to view, so in the interests of convenience, I'll reproduce it here.
--
SURVEY: INFORMATION TECHNOLOGY
Now you see it, now you don't
Oct 28th 2004
From The Economist print edition
[Image]
To be truly successful, a complex technology needs to "disappear"
THERE has never been anything quite like information technology before, but there have certainly been other complex technologies that needed simplifying. Joe Corn, a history professor at Stanford University, believes that the first example of a complex consumer technology was clocks, which arrived in the 1820s. Clocks were sold with user manuals, which featured entries such as "How to erect and regulate your device". When sewing machines appeared in the 1840s, they came with 40-page manuals full of detailed instructions. Discouragingly, it took two generations until a trade publication was able to declare in the 1880s that "every woman now knows how to use one."
At about the same time, the increase in technological complexity gathered pace. With electricity came new appliances, such as the phonograph, invented in 1877 by Thomas Alva Edison. According to Mr Norman, the computer-design guru, despite Mr Edison's genius for engineering he was a marketing moron, and his first phonograph was all but unusable (in fact, initially he had no particular uses in mind for it). For decades, Mr Edison fiddled with his technology, always going for the most impressive engineering solution. For instance, he chose cylinders over discs as the recording medium. It took a generation and the entry of a new rival, Emile Berliner, to prepare the phonograph for the mass market by making it easier to use (introducing discs instead of cylinders) and giving it a purpose (playing music). Mr Edison's companies foundered whereas Mr Berliner's thrived, and phonographs became ubiquitous, first as "gramophones" or "Victrolas", the name of Mr Berliner's model, and ultimately as "record players".
Another complex technology, with an even bigger impact, was the car. The first cars, in the early 1900s, were "mostly a burden and a challenge", says Mr Corn. Driving one required skill in lubricating various moving parts, sending oil manually to the transmission, adjusting the spark plug, setting the choke, opening the throttle, wielding the crank and knowing what to do when the car broke down, which it invariably did. People at the time hired chauffeurs, says Mr Corn, mostly because they needed to have a mechanic at hand to fix the car, just as firms today need IT staff and
XP and MS Office 2003 chew so many resources, that my 98SE + Office 97 kicks its ass. Or even a 486 with Windows 3.11 and Office. Code optimization is a thing of the past.
20% system
20% various useful programs, like browsing, mail, games etc...
60% itunes (for crying out loud, why does a 5 MB MP3 take 60+ MB of memory to play?)
In Soviet Russia, asses suck this joke.
According to Task Manager, Notepad on Windows XP takes up 2,768KB of memory when you start it without a file loaded.
Mind-blowing, isn't it? If anyone has stats for analagous programs on OS X or X, I'd be curious to see them.
Some good things that have eaten more memory and cycles (all of which have improved the user experience, as opposed to what the summary states):
1 Programs that check your work as you go (e.g.: autocalculate on spreadsheets)
2 More help dialogs, things watching for cameras, and whatnot to smooth the user experience.
3 More use of IM and other software in the background much of the time.
4 Services running so that it's faster to sort and search files, open your favorite programs, etc.
In short, lots of stuff running to make your experience smoother, even if it doesn't look like it's doing much more.
Some bad things:
1 More viruses, etc.
2 The mandantory virus scanner that has to run in the background all the time because of (1)
3 All the crap adware that installed more than it used to be.
These are just a few of the trends I can think of . -- Paul
OpenSource.MathCancer.org: open source comp bio
Right now I have 12 windows open.
So a lot of my cycles are going to managing my ability to work in several programs at once. My old iBook at home allows me to have all of two windows open at once... and with noticable performance drops.
If I seem short sighted, it is because I stand on the shoulders of midgets
for crying out loud, why does a 5 MB MP3 take 60+ MB of memory to play?
because that's the size of the uncompressed waveform. You don't play the MP3, you play the waveform that is compressed inside the MP3. iTunes just decompresses the file all at once, and puts that into memory, instead of a bit at a time like some players.
Anyone for audio processing?
I remember noise algorithms taking up to 8 minutes to run against a 3 minute 16 bit 44.1khz wav win95 in 1997. On winxp today, the same operation on a 3 minute 24 bit, 48khz wav takes just under 15 seconds.
Both operations done in cool edit, same version. Just as slow, my butt. The new versions of cool edit enjoy a similar run time.
I challenge any one of you to pull out that old win95 PII box, and start word or internet explorer.
I think your memory would get a bit sharper as soon as you did it.
C'mon, computers are infinitely faster now. Maybe it's all that spyware you've installed on yourselves or something.
l8,
AC
Bloat, you say?
Man, that word sure is thrown around a lot.
My feeling is that the people who call
a lot of stuff bloat are the same ones
who view managers are useless loudmouths.
Truly time-critical code is executing faster than
ever. Compilers are smarter, hardware is faster,
and development systems are cleaner.
Programs are more featureful, intuitive, and pleasant-looking than ever. (I know, very general.)
Then again, if you are simply one of those minimalists who thinks that everything had every feature it needed somewhere around 1993, then
that is different. Pretty much all of that
code still exists, and I'm sure you're happy
to use it. I, however, would rather have
a system that is easy on the eyes, intuitive,
and helpful and wait an extra milisecond or so
than feel content knowing my processor is never
utilized more than 5%. Also, I'm sure the
millions of people who prefer computers Just Work(tm) feel the same way.
As a user of OS X v. 10.0, I assure you that it was an inefficient piece of crap. OS X has come a long way since it was first introduced to the public.
http://www.bynarystudio.com
Well you have to be careful.... some file systems have minimal increments in file sizes. For example, on my NTFS formatted system, a plain text document with one "a" in it is officially 4KB, even though there is onlt one byte of data in it.
This is not an excuse fro a BLANK MSWord document being 19,456 bytes of course. But there is "useful" data in there...
I'm running Win2K, and if I right click on the file and sepect "Properties", there is a summary tab that displays all the info stored in that 19k. (You might have to click "Advanced")
The data includes:
-Title
-Subject
-Category
-Keywords
-Template name
-Page Count
-Word Count
-Character Count
-Line Count
-Paragraph Count
-Scale (No idea what this means)
-"Links Dirty?" (No idea what this is... maybe it's true if there's porn links in it?)
-Comments
-Author (From computer info)
-Last Saved By... (From computer info)
-Revision Number (Number of saves?)
-Application
-Company Name (From registration info)
-Creation Date (Seperate from file system creation date)
-Last Saved Date (Seperate from file system modified date)
-Edit time
Now is this ACTUALLY useful? I dunno. It might be in some situations. There should be an option for not saving this metadata though, for security if not for file size.
=Smidge=
I've found the same -- and my iBook is 4.5 years old now, too. I was expecting the newer versions of OS X to make it choke, and justify a new one, but Nooooo ..... at least, not yet.
timothy
jrnl: http://tinyurl.com/c2l8yr / foes: http://tinyurl.com/ckjno5
I somewhat disagree with the premise of the article. 10 years ago, a barely usable word processor took 15 seconds to start up. I remember Wordperfect 6 being a terrible resource hog on my measly pc. Compare that with the load-times and responsiveness of AbiWord and a lot of progress has been made. The same with Mozilla/Firefox. Netscape 4.0 took something like a minute to load on my 386dx40/4mb iirc. Firefox takes 2 seconds (amd 1800+, 512mb) and has much more functionality. So, in my opinion, user experience of performance has improved. I think people might have forgotten how bad stuff really used to be performance-wise.
Or just use a WYSIWYG LaTEX tool like this one to do all that nasty coding for you :)
"Nine times out of ten, starting a fire is not the best way to solve the problem." - my wife
I think all programming students should have to code for a system like this. It gives you a MUCH greater appreciation for what the compiler is doing for you, and what the consequences of simple changes can be.
Indeed - it's quite a pain trying to port bloated code to an embedded environment, even if it's nowhere near as restricted as the one you're describing. And if you're running off battery power, then every clock cycle costs you battery. It's amazing how hard it is to describe to some people how much of a problem that is. This is something that infuriated me about (for example) Vorbis - a lot of the design really doesn't permit a low footprint, so at the end of the day it's actually a rather battery expensive codec to use.
Still, the old saying that 90% of cpu time is spent in 10% of the code holds just as true for power consumption. In my case, you optimise the MP3/WMA/Vorbis/etc decoder to its limit, and speed up disk reads (to keep it spun down as much as possible). It's due to these efforts that stuff we make (see my info) has far better battery life than rival products. And as a bonus - that also makes user visible responsiveness much better.
Most of it's down to careful design and not micro-optimisation. It really doesn't need a smattering of assembler all over the place (but maybe a couple of functions here and there, e.g memcpy and friends). Perhaps one day people will realise this also holds true for laptops, and we'll see those cycles getting used a bit more efficiently...
Come again? Most PCs are shipping with 7200 RPM hard drives... sure, it's not 10K, but it is still better than 5200 RPM...
Maybe except for that they don't fucking care. Why would they? They're MS and not synonymous with efficiency.
Furry cows moo and decompress.
I think it's a bit of both.
Apple pushed to get OS X released to the public and so they followed the belief of "make it work then optimise". Today we can see the fruits.
An example of this is Quartz. Quartz basically had all the components you needed in 10.0 to do some great on screen rendering and it was reasonably fast. Through each iteration of Mac OS X though it has improved. In 10.1 the speed of the code was improved. In 10.2 we had partial acceleration via the GPU. In 10.3 more optimising. In 10.4 we can see they have completely pulled apart sections of Quartz and rewritten it as well as buffering it all onto the graphics card. That is but one example though, there are plenty of others.
On the other hand, apps like iPhoto and GarageBand were really sluggish and the system reflected that. Mac users cried foul and now you have iPhoto 5 which is blazingly fast and literally all the apps have been following that trend. I know as a developer myself I spend a good 20-30% of my time optimising code simply so users get the speed that they are now used to. It's good, we needed it, especially when we were stuck on the G4's. Now with the G5's it's just icing on the cake.
You think marketing departments need features to sell an product. Marketing's job is to sell regardless of what they are given by the programmers, they will hype up anything. Just becuase the retail box has a giant list of features doesn't mean the program is bloated.
unzip; strip; touch; finger; mount; fsck; more; yes; unmount; sleep
It will amost certainly break the format. Word is designed for processing large documents, and most of this stuff is "reserved space" where the next few thousand characters would go on a disk.
.h file and change it. But to offer that to a user, along with the thousands of other similar options, would confuse the user without making his life noticeably better.
That's what allows you to, for example, type the letter "a" at the beginning of a 2 MB document without it having to shift the position of all two million subsequent characters. It allocates that stuff several thousand bytes at a time because that means it doesn't have to do it very often.
They figure that this 20K is just fine to waste. It costs you far less than a penny worth of disk space and improves performance. The case of a file with a single character in it is degenerate; the amount of space wasted is usually far, far less.
Theoretically they could let you tune the constant; if it were open source I'm sure you could go into some
Your hd is just a spinning disk, what did you expect, it to double speeds every 18 months? There's a limit to how fast you can spin the platters, after all how long have we been stuck at 52x CD-ROM drives? Sure they've gone to 10k rpm and the aerial density is much higher on today's large drives, but you can only do so much without new technology. They completely redesign chips every so often, from pentinum to pentium 2, 3, 4, etc, but the brand-spanking new hard drive you buy today is really no different than the a 10 year old drive, just a faster spindle speed and higher aerial density but the technology really hasn't changed any.
Anyway back to the article: I think it's crap.
"...most word processing programs started to keep up with even good typists somewhere around the 1-Ghz clock-speed mark."
Um, what? Sure maybe if you had the latest and greatest OS and Office running the minimum amount of ram, but if you were running 98, office 97 and plenty of ram on even just a 200mhz no way would the PC not be able to keep up with a "good typists" (before it crashed, it is 98 after all). You know where all the cycles have gone? Background processes and spyware. I know plenty of people with brand new 3ghz processors that are slower than my 700mhz laptop. However this is a good thing, keeps all us computer geeks employeed doing simple things like running msconfig and ad-aware, so complain on computer reject cranky user!
my karma will be here long after I'm gone
The more effort you put into something, the less additional return you will get.
The more cycles you get from your CPU, the less additional power you will get.
I think the main reason is that we don't need the power. The first X Mhz you put in will get grabbed up for the most important things (running the OS). The next X will be used for running the foreground program. The next X will be used for bells, whistles, to multitask, whatever. The next X will be used for - well - nothing very useful, because you are already doing everything useful.
This isn't about Audio API's - it's the whole app framework. WinCarbon some call it - the portion of Carbon ported to Windows to make Quicktime work and give the Apple look-and-feel to native windows apps.
Apple doesn't want to port every iTunes change to MFC. They write it in Carbon, keep the Windows-specific bits separate, and then just develop on Mac and recompile on Windows.
Yes it makes iTunes heavy weight and slower and a second class citizen. But it achieves Apple's goals.
My God, it's Full of Source!
OUTSIDE_IP=$(dig +short my.ip @outsideip.net)
You've obviously never driven a Model-T.
None of the pedals do what you'd expect, and there's a couple extra levers that also do seemingly random things. Tonight, if you say prayers, give a little thanks for modern transmissions and synchromesh. Trust me, they're a beautiful thing.
Repetition does not transform a lie into the truth. - FDR
Actually, I was stuck with a 486DX266 for quite a lot longer than I would've liked to have been. It was a brand name one from an era where brand name meant quality components instead of fake cache chips and was actually rather fast for what it was, but in order to decode an MP3 I had to use players which would allow me to decode in mono and in some cases only decode at 22050.
This is of course long before I had ever used linux, and for all I know the experience of playing MP3s on a 486 in linux could be entirely different, but MP3s + 486 + Winblows = glitches, skips, crackles, pops and not a whole lot of CPU left to do anything else.
Top on Linux:
6282 bubba 15 0 62792 7380 5048 S 1.4 6:20 0.3 xmms --sm-client-id 11
XMMS uses 62MB of virtual memory to play a small MP3.
There is. I'm running Slackware 10.0 (can't wait to get my 10.1 disks! w00t!). I use vim+LaTeX for all my document prep needs on the command line (use an xterm if you so choose). As others have mentioned, LyX isn't bad.
I'm a physics major at UW, so I do a decent bit of scientific work on my computer. I use GNUPlot, XFig and the Gimp to generate drawings for lab reports and whatnot.
I'm typing this from Firefox running on the Xorg6.7.0 server+WindowMaker 0.91. The key here is to use a lightweight window manager. Blackbox and fluxbox are other good choices (light, usable, not fugly (cough, fvwm, cough)). If you have to have that desktop environment, go with Xfce.
The only gap that I occasionally feel in my user experience is a good spreadsheet. I haven't found one. KSpread, OpenOffice Calc and Gnumeric either are or require the use of heavy GUI software which we are trying to avoid (KDE and Gnome are not as big as XP, but far too big to run comfortably on my system). I've glanced at Siag, but haven't really tried it out (I don't know scheme and don't have the time to figure it out right now--see physics undergraduate work).
I use mutt or pine, depending on which email address I'm checking. Thunderbird looks promising for being light and good, if you want a GUI based email client.
Recompile your kernel to match your hardware (trim the fat and optimize for your processors), and turn off any extra servers that you don't need (don't need telnetd, ftpd, &c. running? Turn off inetd--it's also more secure). Customize your boot sequence to only start and load that which your system needs and those things which you use.
I also boot to the command line and don't run xdm or the like. I do a lot of work from the command line, and X+light WM doesn't take long to start. It is, again, one less thing wasting clock cycles on my machine.
For reference, I'm running my Slack 10 system on an Abit BP6 with two PIII 866MHz processors underclocked to 650MHz (long story... Has to do with the fact that the BP6 doesn't technically support the PIII). I've got 384MB of RAM and a GF4 video card. It is lightning fast. The only exception to this is when I'm running X with the closed nVidia drivers (damn thing has a 3MB kernel module... grrr...), but that only adds a hang of a couple seconds when switching between X and the consoles, and that's it. If I'm not playing Quake or dealing with 3D visualization stuff, I can use the OSS driver (2D accel only), and get rid of even that performance problem.
So, yes, the middle ground is there, and it rocks. My computing experience is awesome, my slightly dated hardware is rock solid and perfectly responsive. Take a good, customizable Linux distribution, run light weight software, turn off stuff in the background and run a lean, mean, customized kernel, and you'll reclaim those lost cycles as interface responciveness. I suggest Slackware for this. FreeBSD, Debian, and any other Linux distro which is aimed at power-users will be good for setting up a configuration like this.
Mandrake, RHAT (RHEL & Fedora), SuSE and any other user-friendly type distro is ill-suited to this, IMO. Not that you can't, but my experience with these distros and their high-level admin tools is that if you try to do something too different from the default, it gets extra hard. So, Slackware and the like just end up being simpler, and now you know what Slack users mean when they say "it's simple." So stop giving us funny looks when we say it.
Jeff
You totally missed the point.
The latest 3D shooter was really pushing the limits of technology, frequently slowing to a crawl on an ordinary PC when there were lots of monsters in sight. What year was this? Well, it could be last month with halo 2. Five years ago with Quake 2, ten years ago with doom, or fifteen years ago with Wolfenstein. Yes, in the last 15 years, first person shooters haven't got any faster. Of course, my memory of dates is a little rusty, but I recall Wolf3d running just fine most of the time on my flash 386DX/40, though it didn't cope with more than 6 enemies at once. We've gone forward fifteen _years_ and now doom 3 runs just find on my XP 2600+ but doesn't cope with more than 6 enemies at once.
Now, nobody is trying to claim wolf dprd is much as doom is doing, but the guy sitting there with the stopwatch could easily say things haven't got any faster in fifteen years. Similarly, load times have barely improved in fifteen years -- you try loading an old version of excel on a 486 with plenty of ram. Now do it on a brand new box with plenty of ram. The new box is about twice as fast. So in ten years, we've just managed to double real speed.
Returning to your calculation, if you had that G5 a few years ago, I bet you'd have calcuated something more complex. The time things take bears much more resemblence to what we'll put up with than to anything else. I've had the most weird experience of this on my current project. It was started in 1998 and while most of the code has been replaced over the years, there is still a fair amount of code in use that was written in '99. Now, back in '99, the computer I was using was slower than my current one and so I wrote progress bars and the like. If I run the system now, you see those progress bars zip across in minutes. Then you come to the bits of code that were written in 2001 and the progress bars go across fairly swiftly. Then you come to the bits written in 2004 and the progress bar takes a day (almost as bad as the 1999 bar did in 1999).
So, have I forgotten how to code like I did in '99? No, just my expectations of what I can do have increased and the latter stages of the program are far more ambitious. Similarly, the people working on Excel 2005 will be concentrating on making it that much easier to use, and just like every generation before them, they'll measure CPU performance in seconds rather than in clock cycles. A better usability rating in the twice time is unacceptable, but a better rating in twice the clock cycles is a huge win (two years apart, naturally).
Disk access speeds are not directly proportional to the RPM of a drive. If a larger capacity hard drive and a smaller capacity hard drive are phyically the same size and spin at the same speeds, the larger capacity drive will be faster. The sectors are just physically smaller. Therefore, disk access speeds are actually faster for larger capicity drives. If you do a benchmark you will find this to be true, as the physical size of the disks from 1998 to now are about the same.
Although if disk capacity is gained by adding platters (disks), you won't see a performance gain. The number of heads labeled on the hard drive is usually directly proportional to the number of platters. If you compare the number of heads on a disk made in 1998 and a disk made in 2005, probably the number of heads has not changed a lot. A benkmark is the best way to see that disk access speeds are always increasing.
During all that time, he's cut run times by at least 50%. He's working for a non-profit, and they don't necessarily have the money to spend on new hardware.
You have fallen into the trap. You are failing to account for the amount of computing time that can be saved. If you can cut the run time of a program in half, there's that much more computing time and power available. Do it to several programs, and you can find yourself with several extra hours of computing time. What you propose is that every time you need to improve your run times, you have to spend an extra $200+. What he did was he cut out the need to continuously spend extra money per the Wintel methodology.
He's trying to weed out the modern day "programmers" who don't know why you should declare doubles before longs and floats, longs and floats before ints and pointers, ints and pointers before shorts, and shorts before chars.
I put it to you thusly: he's trying to save money in the long term, while you're being penny-wise and pound-foolish.
OCO is Loco
1. Control Panel:Display:Appearance:Effects -- turn stuff off.
2. Control Panel:Mouse:Pointers -- turn shadow off
3. Leave the desktop blank
4. Run: services.msc -- turn stuff off (Themes, indexing, other items you do not need -- be careful -- here there be dragons)
Lots of petrified grits
He meant "C+@", not "C@+":
Google Search with some hits
No, a disk cache keeps frequently accessed data on permanent storage in RAM to make it quicker to access.
What you buy from the RAMdisk is fast startup of any apps located in ram.
Right, so you optimise the operation you'll only ever be performing *once* for the whole time you're using the app by wasting memory it could be using to do whatever it is that it does.
Have you ever heard of "optimise for the common case" ?
Of course, now you have two copies of the application in RAM - one on the RAMdisk, and one in system RAM executing - so you pay in RAM for what you gain in speed.
Yes, and this is why (modern) disk caches and RAM disks are basically the same thing. A RAM disk makes accessing the app's data - executable,m libraries, etc - faster by copying it into RAM and executing it from there. But this us *also* exactly the same thing a disk cache does. So, you're sacrificing *twice* as much RAM as you need, just to make starting an application up faster (probably the most infrequent operation you'll ever perform within each application).
Not to mention the time you use "precharging" the RAM disk is going to be *at best* the same amount of time you use starting the application for the first time and letting the disk cache do its work.
You really need to read up on how disk caching works - there's a very good reason RAM disks aren't used much any more (there are a few - very few - situations where they can offer benefit, but optimising application startup times isn't one of them) and that's because on modern systems, disk caching gives a much bigger overall performance boost.
I started running Linux on my 486DX2/66 (became a DX4/100) in '97 and my impression of mp3 playback (using mpg123, iirc) was that I had a decidedly better experience under Windows using winamp. Put simply, I had to convince the player to decode to 22KHz mono when running under Linux and I could run stereo 44KHz with winamp.
Still, I suppose it may have been a soundcard (Yamaha opl3-sa3, iirc) and drivers issue?
Slackware user since 1997.