When writing a new angle to a servo remember that a servo pulse is updated every 20ms - so for a slow move / sweep a wait state (delay) before writing a servo pos should be a multiple of 20ms.

When incrementing the angle by 1 and writing the new position every 50ms, the arm would move after 60ms then after 40ms, again after 60ms then 40ms and so on.

When incrementing the angle by 1 and writing the new position every 10ms, the arm would move after 20ms but in the meantime the angle is incremented by 2; when doing this every 5 ms the angle  is incremented by 4, every 2 ms by 10.

Looking into the datasheets of SG90 or MG90S the max speed is written as 100ms per 60 degrees (the bigger ones as MG966 need 170ms) - so it would take 300ms per 180 degrees.

On the other hand the maximum angle difference for a writing cycle every 20ms would be 12 degrees.