My initial attempt at getting a running system was to install an x86 VM via qemu / utm. It worked but was about 1 /4 speed of my old MacBook.
Round 2 was to an arm64 VM via qemu / utm (utm is using qemu here, but I guess it’s almost running purely on the M1?). That’s blazing fast but I don’t have everything I need compiled for it. So I’m recompiling what I can and whatever I can’t I’m then using qemu user mode within the arm VM to run the x86 binaries. The VM itself is really fast, the x86 code, obviously isn’t, but I’ve at least minimised the times I need the emulation.
Not sure of a better approach, but as I say, definitely open to hearing what else I can do.
Forget about full system emulation, especially with Qemu’s approach which doesn’t leverage the host MMU. Emulating an MMU alone is very costly perf-wise. That means that you should use an arm64 OS and then use an x86 compat layer on it.
For Qemu’s user mode emulation, it doesn’t exactly provide good performance either. But it is still much better than full system emulation.
Mac OS is arm64, with an arm64 Ubuntu VM, then I’m running qemu in that for specific single x86 processes.
To clarify, I’m using UTM to run the VM, so it’s using qemu - but it looks like that doesn’t give you a performance cost in itself.
(I assumed FSE from your 40x worse perf figure, which is a very bad case)