I ran a multithreaded poker solver (a Windows executable) on top of Wine on Rosetta on base MacBook 13 M1 and it beats the performance of base MacBook Pro 16 inch (Intel 6-core) with Windows running on bare metal by a small margin.
(M1 fan actually turned on, which is a rare occurrence; at the same time MacBook Pro 16 Intel would be frying my laps. Ballpark estimates on the internet seem to pin it down beating MBP16 6-core i7 and trailing MBP16 8-core i9 on pure CPU performance benchmarks, power obviously much lower; GPU far better than Intel UHD 630 and close but not quite as good as Radeon 5300M.)
For most applications that aren't especially pathological for Rosetta (e.g. V8 x64), it seems not more than 10-30% slower than arm64.
(Don't feel too surprised. If your binary is static code, it is pretty much a static compiler from x86 to ARM [albeit an incredibly well executed one], so not magic: in fact if you disable SIP on your system, you can peek into the translated executables in `/var` and look into them via `objdump`/`otool`)
--
Another benchmark that is a bit worse for Rosetta:
Compiling gRPC from clean source (not quite Apple to Apple comparison cause under Rosetta, it runs LLVM x86 codegen vs LLVM arm64 codegen outside Rosetta and I did not want to mess with the flags). I also feel like process creation under Rosetta can be more expensive, but not sure.
What solver are you running? What kind of performance do you get with these setups? I'm curious because I only hear about more core-heavy builds for piosolver. Thanks
I tried PioSolver free version with identical settings on all machines and targeted a certain exploitation level and compared the time it took to finish the task. Performance on M1 is close to a desktop 3600X (admittedly weak cooler was installed on that machine)
There are various benchmarks on YouTube showing the performance is reasonable. Native code is obviously faster but with rosetta it seems like the M1 is a mid tier Core i5 or Ryzen 3 series in performance. Not bad at all but not top tier.
IBM POWER9 supports some memory ordering instructions that (as I understand) would in theory be useful for x86 emulation, but a) I'm unsure if anyone actually uses them and b) They are removed from POWER10
I've read claims that rosetta 2 is fast. I haven't seen results about m1 running x86_64 through rosetta vs intel though.