Are you rebuilding the surface every frame? it seems like it. It's faster to just move the vertices offscreen when deleting an object and move them back when creating a new one. Most of the time building the surface every frame is slower than just rendering the maximum amount of particles (where most of them are offscreen and not wasting fillrate anyway) every frame.