Hi,
On 9.8.2021 0.04, Nicolas Pomarède wrote:
I just pushed some changes to do_cycles_ce() to require a little less
cpu ressource. This function is called after every cpu instruction is
emulated, so even small optimisations can have positive effects.
In the case of the Amiga and WinUAE, emulation needs to update other
components (blitter, video, audio, ...) every 2 cycles during the
emulation of each cpu instruction.
In the case of Hatari when emulating STF/STE machines, this is not
required. So we can replace this loop :
while ( <n times> )
do_cycles ( 1 * CYCLE_UNIT );
with :
do_cycles ( n * CYCLE_UNIT);
From a quick benchmark when running some demos, I go from ~134
emulated VBL/s to 143.3 VBL/s, which gives 7% increase in emulation
speed.
It's only when running in STE mode and blitter is enabled that we use
the slower "sub cycle" version to emulate that part of the last cpu
instruction can run in parallel with the blitter.
Nice! That's a good improvement, especially
considering that it does not have any impact
parts that need to run with sub cycle code.