Many thanks for the cycles David; I had no idea that AddMesh could combine surfaces as well, so that's another possibility for me to investigate.
That said -- your own code demonstrates my =exact= problem if you up the instances required from 10 to 1000. On my rig it takes 24668ms to generate 1000 sphere primitives, while it takes 48242ms to generate 1000 equivalent sized meshes -- which suggests that something nasty's happening when you start doing lots and lots of custom mesh work. Blow that out to 10000 instances and you start to see my problem.
That said -- your own code demonstrates my =exact= problem if you up the instances required from 10 to 1000. On my rig it takes 24668ms to generate 1000 sphere primitives, while it takes 48242ms to generate 1000 equivalent sized meshes -- which suggests that something nasty's happening when you start doing lots and lots of custom mesh work. Blow that out to 10000 instances and you start to see my problem.