Unity / RIDER:乘法运算的顺序效率低下?

Mar*_*ith 6 c# unity-game-engine rider

骑手 IDE 通知我以下内容效率低下

        transform.Translate(moveDirection * speed * Time.smoothDeltaTime);
Run Code Online (Sandbox Code Playgroud)

并想将其重写为

        transform.Translate(Time.smoothDeltaTime * speed * moveDirection);
Run Code Online (Sandbox Code Playgroud)

有人知道为什么吗?

都是乘法,有什么区别?

对于某些情况,这里是 speed 和 moveDirection 的值

private Vector3 moveDirection = Vector3.left;

private float speed = 2.5f;
Run Code Online (Sandbox Code Playgroud)

我有点不明白为什么它更好?

任何人都可以帮忙吗?

谢谢

Xen*_*oRo 10

Vector3 有 3 个组件。X、Y 和 Z。

将 Vector3 乘以一个值,就是将组件乘以该值。

由于向量旁边有 2 个值,因此顺序与结果无关,但与操作次数有关。

那是因为向量优先将导致 3+3=6 次乘法:

  1. X*=速度
  2. Y*=速度
  3. Z*=速度
  4. X*=时间
  5. Y*=时间
  6. Z*=时间

虽然 vector-last 将是 1+3=4 乘法:

  1. 规模=速度*时间
  2. X*=比例
  3. Y*=比例
  4. Z*=比例

无论哪种方式,这只是 Rider 对性能的偏执,而这种级别的优化虽然总是受欢迎,但在大多数情况下绝对不是必需的。

  • 感谢您的回答! (2认同)
  • @BrunoEly 也许可以。Afaik 看起来还没有完成......。这(可能)就是如果你不自己做的话 Rider 会生气的原因。 (2认同)