Particle System Overhead

I’ve been profiling my game in the new iPad and noticed I got a large overhead on the cpu player stat. I then profile it using the editor profiler attached to the iOS player and there seems to be a lot of processing going on ParticleSystem.Update, I’m not constantly shooting out particles or anything so why the overhead?

Here’s captures of the internal profiler and the editor profiler, both on the same scene and same spot.


If you use the ParticleAnimator component (responsible for moving the particles), it have to calculate the movement equatation (pos = pos + velocity) adjust the energy (livetime) for each particle and finally create / update the vertices of all particles. How many particles are there in your scene?

I have similar issue with Shuriken particles. I have about 200 GameObjects with ParticleSystem attached, but none of them doesn’t emit particles automatically. I see high load caused by ParticleSystem.Update though. I tried to disable GameObjects and all ParticleSystem items as well, but with no result (

So, I’ve re-wrote all my particles from shuriken to legacy particles and CPU load falled to 0% when all particles are stopped.

I think it is the only solution for now.

More you can see in my question: Shuriken particles - strange load CPU with ParticleSystem.Update - Questions & Answers - Unity Discussions

legacy are faster. the news ones have more functionality but thats just more conditions to check per cycle. if you can do it with the old system use that because its faster based on my experience.

usually in most engine i used in the past if particles were to difficult i would do a work around with a single object and texture and effect based on the events and how long before they disapear or appear and then disapear that way if i need to i can also use them as objects and particles at the same time.

I think the issue is the profiler, if you look at the self ms column it is a huge percentage of the actual time spent. This indicates that the profiler is spending a lot of the total apparent time.

Maybe Unity could have an actual column where it subtracts the profilers own time from the total time in that area.

Possibly the code is complex or has to iterate a lot over all particles and particle systems.