Both macOS and Windows can translate existing legacy x86 code into native ARM64 code. This allows apps written for Intel Macs to run on Apple Silicon (using ...
Interesting topic, but tragically shallow treatment of the subject. He tested with Handbrake and found Apple’s Rosetta 2 to be slightly better (lower overhead) than Microsoft’s solution, and tested with some of his own code and found Microsoft’s to be significantly better than Apple’s. But we didn’t get any description of what that mystery code is doing, so it’s a largely worthless result and leaves him without enough justification to make any solid conclusions (Handbrake is a good test to start with, but not enough on its own).
I would have liked to see a comparison of what x86 instruction set extensions are supported by the respective compatibility layers (especially the SIMD extensions), an overview of the general techniques used by the compatibility layers (ie. ahead-of-time translation or JIT or instruction-by-instruction emulation or a mix of techniques) and how much caching of translations affects first-run performance vs subsequent runs, and comparison of both single-threaded and multi-threaded workloads (because ARM’s weaker memory model than x86 is a major challenge for translating multi-threaded code with low overhead).
because ARM’s weaker memory model than x86 is a major challenge for translating multi-threaded code with low overhead
As someone else here has pointed out, Windows on ARM emulation ignores this by default and just accepts the possibility of wrong results or app crashes.
So, you’re likely not going to see much performance difference, but…
Interesting topic, but tragically shallow treatment of the subject. He tested with Handbrake and found Apple’s Rosetta 2 to be slightly better (lower overhead) than Microsoft’s solution, and tested with some of his own code and found Microsoft’s to be significantly better than Apple’s. But we didn’t get any description of what that mystery code is doing, so it’s a largely worthless result and leaves him without enough justification to make any solid conclusions (Handbrake is a good test to start with, but not enough on its own).
I would have liked to see a comparison of what x86 instruction set extensions are supported by the respective compatibility layers (especially the SIMD extensions), an overview of the general techniques used by the compatibility layers (ie. ahead-of-time translation or JIT or instruction-by-instruction emulation or a mix of techniques) and how much caching of translations affects first-run performance vs subsequent runs, and comparison of both single-threaded and multi-threaded workloads (because ARM’s weaker memory model than x86 is a major challenge for translating multi-threaded code with low overhead).
As someone else here has pointed out, Windows on ARM emulation ignores this by default and just accepts the possibility of wrong results or app crashes.
So, you’re likely not going to see much performance difference, but…