With translation the cod will be translated before it starts running. With emulation it's more like a VM, where each instruction run is translated to the other archs counterpart. In other words, consider an imaginary program that has one big loop. Let's say it has 100 instructions. With translation you get another program with some instructions of the similar size (same order of magnitude). With emulation you interpret each instruction as it goes, so if your loop has 1B iterations you pay the penalty of emulating (converting on the fly) 1B times (very simplified). So translation is better for performance.