Why are PCG actors faster than an ISM?

So, I have a PCG that populates a landscape with trees. I used the Static Mesh Spawner node so that it spawns static mesh instances in an ISM. There are 7600 instances in total. This is way more than I would ever actually need. In reality, I probably only need about 2000, but I wanted to stress test it.

With ISM instances, there is about 730 draw calls. The game thread is about 5.7ms and the draw thread is about 25.4ms.

I then changed the PCG to use the Spawn Actor node instead, to spawn actual Blueprint actors instead of ISM instances.

With actors, there is about 8300 draw calls. The game thread is about 7.5ms and the draw thread is about 18.6ms.

In terms of actual FPS, it is about 30% faster using blueprint actors instead of ISM instances. Note this is just in PIE, but I would imagine the packaged version would have a greater difference in performance.

I ran this experiment as I need functionality on these trees. I started looking into swapping out the ISM instances with blueprint actors on-demand, but then I wondered what would happen if I just spawned in actors from the beginning. No swapping required. I was surprised by these results.

Anyone have any ideas as to why this might be the case? Might there be anything I’m not thinking of before I roll with this solution?

Don’t trust PIE, it’s kind of random - try Standalone, or preferably packaged for a real idea.