As an off-topic solution, there's always the GPU to do the the particle updating. With half decent optimization, I've gotten over a million particles in <i>real-time</i>. You could presumably run several of these at the same time to get as many particles as you want. Downside would be ease-of-implementation...<br>