iMac Core Duo, the First Afternoon
My iMac arrived today, and I’ve done preliminary testing of the universal binaries of my applications (which I’d built last week). So far so good, and I plan to ship them next week. Here are some random notes from the first few hours:
- The iMac case design is great, probably one of Apple’s best. I like the way the air vent is hidden behind the stand. It’s much quieter than my G5. It seems unfortunate that the iSight angle can’t be adjusted separately from the display angle. The vertical slot-loading optical drive feels weird, but maybe I’ll get used to it. There are at least four dead pixels, which is more than on any of my previous LCDs.
- In general, the user interface is much more responsive than on the G5. Live window resizing is very smooth, for instance. I wonder if this is due to the video cards. Is a 128 MB Radeon 9600 XT that much slower than a 256 MB Radeon X1600? Or maybe it’s because the iMac only has one display at present?
- Rosetta is transparent, and the performance is acceptable. Launching a PowerPC application for the first time is what feels the slowest—actually using it isn’t too bad. It does take extra RAM to run applications in Rosetta—about 13 MB in SpamSieve’s case.
- Running natively, my applications are much faster on the iMac than on the G5, and they launch almost instantaneously. (Both machines are dual 2 GHz.) I have not yet tested any applications that use AltiVec. Compiling is much faster on the iMac.
-
I developed the universal binaries on the G5, and so far there’s been only one surprise—due to a stupid mistake on my part—running them on Intel, and it was caught with the unit tests. Here’s an excerpt from the code that writes SpamSieve’s corpus to disk:
uint16_t keyLength = NSSwapHostShortToBig(usedBufferLength); uint16_t valueLength = NSSwapHostShortToBig([valueData length]); [data appendBytes:&keyLength length:sizeof(keyLength)]; [data appendBytes:&valueLength length:sizeof(valueLength)]; [data appendBytes:keyBytes length:keyLength]; [data appendData:valueData];
The bug is that in line 5 the length parameter should not be swapped.
- I get a CoreEndianFlipData error -4942 on the Console when SpamSieve uses the resource manager to read an Entourage sound set file. It seems to work fine, though.