However using the Unity built-in profiler it's showing this is taking 14ms each time and this script is attached to to every vehicle since it's the behavior for vehicles.
Am I doing something wrong? Should WaitForSeconds be taking this long? What is an alternative to using WaitForSeconds()?
You can't get faster than your framerate. Coroutine "steps" are executed after each frame. The only way to get faster would be to create your own thread, but the Unity API is not thread save so you can't use anything from unity. You would still need to copy the required data inside update. Even `FixedUpdate` isn't running faster. It's not "Fix" it's "Fixed". That means if your FixedUpdate should run at 60 fps but your current Frame rate is 30 fps each frame Update is called once and FixedUpdate is called twice in a row. If the framerate is lower it will be called more often to fix the framerate statistically.
For most tasks FixedUpdate is enough. You have a constant call rate within a defined timeslice. But you can't rely on the time between the calls. Time.deltaTime will return a fix value inside FixedUpdate but it's not the true delta between the calls. It's just 1.0f/FixedRate