Performance

GameBoy.jl is focused on performance over accuracy or feature compatibility; no attempt to emulate sound for example.

There are a set of benchmarks and a set of tools to help analyze and improve performance.

Benchmarking

The benchmarks can be found in ./benchmark. These are a reahash of the Blargg test cases wrapped in BenchmarkTools.

Currently on my laptop I am seeing ~2 seconds per 1-minute real time trial, which is approximately a 30x increase over the hardware.

Profiling

The ./profile project exports two functions to help analyze performance and figure out where resources are being spent.

pcpu uses Profile and ProfileView to build a flame graph of time spent in each function by sampling the stack periodically during a run.

palloc uses Profile and PProf to build a network graph and flame graph of the memory allocations during a run.