way to prevent fps going down

suppose we have a thread, and it will execute 60 or 30 times per second,
but if we have too much collisions, or sprites in the game loop then that fps count it will go down,
but that is because we are processing the same thing those times right, I mean , if I have a particle system ( and I know those consume much process power ), what will happen if I dedicate one tick to process only the particles instead to process them, and the input, then sprites, then render,
I mean, there is no point to process all of that all the time, right?

im trying to say that, what for certain functionality I can skip other work?, to prevent that FPS going down


run()
{

while( true )
{

if( particles processed ) continue;

processinput
process collisions

render

}

}