Why apps will get slower

New machines come with multicore processors. Mine has eight, ought to be plenty fast. Unless the apps only use one of them, of course. Since the number of cores go up pretty quickly with each generation, while the speed of each core remains more or less the same, and the workload of the apps goes up, the net effect of a singlethreaded app is that its performance goes down with each new generation of hardware. So, please, fellow developers, get a grip and go multithreaded now.

For the last half hour I’ve been watching grass grow, or rather the Mac OSX Stuffit Expander unpack excercise files from Lynda.com. These excercise files are for Final Cut Express HD and consists of 12 sitx files, each around 240 Mb. …ah, it just finished. Looking at how the CPUs are loaded during the execution of the Expander, it’s no mystery why it’s so slow:

As you can see, there’s a 100% CPU hogger walking from core to core. It’s even clearer just as the walking ends and the process is done:

Interestingly, during this half hour, Safari hung (which in itself isn’t too unusual) and Parallels that was running two XP instances in the background that were doing nothing and I did nothing with, crashed. Normally, this machine is stability itself, except for occasional Safari hangups and I’ve never before seen Parallels crash like this, so I think there’s a connection.

Now, if you look at how a righteous app like iMovie ’08 works, you’ll see something like this (while creating movies):

I could run WoW with totally normal performance even while iMovie was going full blast. No crashes or hangs either. I wouldn’t be surprised if the system is most stable when all cores have some headroom left, while 100% load of any core is destabilizing. I’m just guessing here.

Memory mix on Mac Pro

I have a hard time finding info on exactly which combinations of memory are doing exactly what on the Mac Pro 8-core. As far as I understand, full memory speed is only achieved with four memory modules, since the machine can access four in parallel. I did get four 2 Gb modules (800 MHz) from OWC and I’m very happy with them, but there are the two 1 Gb modules (also 800 MHz) that were delivered with the machine and what do I do with those? If I plug them in on the top memory board as the manual advises, will accesses to these two modules be slower than accesses to the rest of memory, or will all memory access slow down?

To find out, I did a very unscientific test. I plugged in the two 1 Gb modules, so I had a total of 10 Gb of RAM in the machine, then booted it up. Ran a few programs and then started WoW. Had my character run around in a circle in Gadgetzan and saw a consistent jerkiness. The framerate according to Wow was 29 fps.

Powered down, pulled the two 1 Gb modules, booted up again and went back into WoW. Again ran around in a circle in Gadgetzan and had 60-65 fps all the time. Gone was the jerkiness. Conclusion: it’s not worth it to plug in pairs of RAM you’ve got lying around. Stick to foursomes.

Oh, BTW, if your machine becomes sleepchallenged (reboots when you try to wake it from sleep) after swapping memory, do the pull-all-cables-wait-15-seconds-then-plug-in-again, plus the parameter RAM reset (cmd-opt-P-R) one or more times. At least, that fixed it for me.