Thanks Eric. That's certainly worth keeping in mind.
In this instance, with the rotating buildings, reducing (or increasing) the resolution destroys the effect. All the windows get crushed together since I did not use image scaling on the images for the window tiles. They have their own aspect ratio and there are up to three layers for each window in certain bits which are a little easier to match up when they're not auto-scaled.
Also, even on a RTX2080 with throttling set to 1 I'm getting just 5fps. Reducing the resolution down doesn't change that since it seems to be the number of iterations (160 per wall) that is slowing it down. I needed 20 floors on each building so that the ends aren't visible when a wall is coming in to view. So, looking at the GPU and CPU load, it seem Magic is CPU bound with one logical core at full capacity and the GPU bouncing between 30% and 50%.

- gpu_bound.jpg (113.59 KiB) Viewed 465 times
I'm sure there are a number of other ways I could optimise it to run at a higher frame rate.