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>