I just profiled my project in 2017.2.0b6 and noticed a lot of these calls:
Physics.SyncRigidbodyTransform
TransformChangedDispatch
WaitForJobGroup
It seems every time any physics related state is queried, such as a Physics.Raycast, Unity is doing in 2017.2 something it didn’t do before? I can’t remember to have seen all those Physics.SyncRigidbodyTransform calls in earlier builds, such as 2017.1 for example.
It actually did those syncs before, but it was done in background; not exposed to users. Now you have the option to manually sync rigidbody position with transforms if you’re interested in maximizing your performance. I’m guessing it only shows up in the profiler now because it’s something users can have access to, and because they made a new API for it
See:
Basically, Unity by default will always try to check if you have rigidbodies that need syncing whenever it does any sort of physics query. This is a “safe” approach for most users who aren’t too tech-savvy. But if you know your stuff, depending on your game, you can get away with waaaaaaaaaaay less sync calls if you take care of it manually. Maybe even just one sync per fixedUpdate could be enough in a situation where you’d have a hundred sync calls per frame by using autoSync
From what I understand (and I’m not sure if I understand correctly yet), the Sync calls are only useful for when you moved a Transform that has an attached Rigidbody/Collider. In theory, this isn’t something that will happen very often at all, because the better thing to do would be to move the Rigidbody directly. So I think only one sync per frame is necessary in most cases if you do things properly and never move collidable stuff with Transform directly. But I really need to do some tests on this and/or ask the devs about this