Saving/loading turned out to be negligible, possibly because I used a binary format instead of JSON.
The slowest part right now is actually generating the minimap level thumbnails, it only does this once and it doesn't cause any lag, in the future if I can be bothered I'll use a script to generate these as image files.