29 March 2006

RAM and Rosetta

Here's a bit of advice from someone who's been spending a lot of time working in Rosetta the last few days: Buy as much RAM as your MacTel can handle. It makes a huge difference. I've got 2 GB in my MacBook Pro now and compared to the 512 MB that came stock, it's like a whole new machine. If you're wondering why RAM would make such a difference, I think it's important to remember how Rosetta works:

When an application launches on an Intel-based Macintosh computer, the kernel detects whether the application has a native binary. If the binary is not native, the kernel launches the binary using Rosetta. If the application is one of those that can be translated, it launches and runs, although not as fast as it would as a native binary. Behind the scenes, Rosetta translates and executes the PowerPC binary code. Rosetta runs in the same thread of control as the application. When Rosetta starts an application, it translates a block of application code and executes that block. As Rosetta encounters a call to a routine that it has not yet translated, it translates the needed routine and continues the execution. The result is a smooth and continual transitioning between translation and execution. In essence, Rosetta and your application work together in a kind of symbiotic relationship. Rosetta optimizes translated code to deliver the best possible performance on the nonnative architecture. It uses a large translation buffer, and it caches code for reuse. Code that gets reused repeatedly in your application benefits the most because it needs to be translated only once. The system uses the cached translation, which is faster than translating the code again.
With more RAM, there's more room for cached translated code, which means faster execution.

No comments: