gb_step_cpu() may be refactored into separate inlined functions in order to allow gb_run_frame() to wrap the main interpreter in a for loop, whilst keeping the current functionality of gb_step_cpu() for debugging purposes.
Any change in performance should be recorded in BENCHMARK.md, Other optimisations mentioned in the comment above should also be considered.
An increase in performance may be realised by calculating the time until an interrupt is expected as shown in https://github.com/gregtour/gameboy/issues/5#issuecomment-120506864 .
gb_step_cpu() may be refactored into separate inlined functions in order to allow gb_run_frame() to wrap the main interpreter in a for loop, whilst keeping the current functionality of gb_step_cpu() for debugging purposes.
Any change in performance should be recorded in BENCHMARK.md, Other optimisations mentioned in the comment above should also be considered.