Correct me if I'm being stupid, I know sod all about programming (having only started looking at cocoa as my first language about a week ago), but why wouldn't apple make iTunes 64bit? Wouldn't that offer the best performance on 10.5?
The term "64-bit" is very much abused, especially by game console manufacturers - which is where the public at large has heard the term most often.
A processors "bitness" (i.e. 16-, 32-, 64-bit, etc.) is generally used to refer to one of the following:
- The size of the processor's registers - that is, the number of bits it can perform math on in a single machine-instruction using a single register.
- The size of the address bus - the maximum amount of memory that can theoretically be attached without resorting to external bank-switching hardware.
- The size of the data bus - the maximum amount of data that can be moved to/from RAM in parallel.
In the case of Intel's 64-bit chips, all of the above are true. In addition, there are more registers. This isn't a 64-bit feature per se, but it is something that Intel and AMD added when they designed the x86_64 architecture.
Notice that speed has nothing to do with this. A 64-bit chip and a 32-bit chip that are otherwise identical will perform identically. And the 64-bit chip might even run more slowly, because many objects in memory (like memory pointers) will be larger, requiring more memory access and more cache.
A wider data bus can improve the performance of existing 32-bit code. The wider address bus can indirectly improve the performance of 32-bit code (a single app can only access 4G of RAM, but the system as a whole can use more.) More registers can (I think) improve the performance of 32-bit code, if the program is compiled to take advantage of them. And some features (wider registers) only affects 64-bit code.
Keeping this in mind, consider what iTunes does. It reads files from disk, it decodes the audio/video, and it pushes the decoded data to the operating system's A/V APIs.
Now consider what parts of this would benefit from being 64-bit. Reading files would not benefit unless the program tries to load the entire file at once (which would not be a good idea unless you can guarantee that there's enough RAM to hold it, since swapping would cancel out any performance benefits). 32-bit code can use file-system APIs capable of reading large files (greater than 4GB, whose length is too large for a 32-bit integer.) Decoding the A/V would definitely benefit from more registers. It might benefit from wider registers, but the existing SIMD instructions (AltiVec on PPC and SSE on Intel) already support 64-bit operations, and iTunes almost definitely uses these instructions. Pushing the decoded data to the OS wouldn't benefit from having more bits.
In other words, it is unlikely that a program like iTunes would benefit very much from being ported to 64-bit code. In general, the applications that get the greatest benefit are those that may need to access more than 4GB of data at once. Apps like Photoshop, FinalCut, etc. As 32-bit apps, these programs would have to swap data to/from disk, which is slow. As 64-bit apps, they can keep their data in-memory, which is fast (assuming there's enough RAM installed, of course.)