Unity technically features two different Physics Engines: Nvidia's PhysX for 3D physics, and the Open Source project Box2D for 2D physics. However, their implementations are highly abstracted, and from the perspective of the higher-level Unity API that we configure through the main Unity Engine, both Physics Engine solutions operate in a functionally identical fashion.
In either case, the more we understand about Unity's Physics Engines, the more sense we can make of possible performance enhancements. So, first we'll cover some theory about how Unity implements these systems.
Physics Engines generally operate under the assumption that time advances by fixed values, and both of Unity's Physics Engines operate in this manner. Each of these iterations is known as the Timestep. The Physics Engine will only resolve each Timestep using very specific values of time, which is independent of how much time it took to render the previous frame. This is known in...