Quaternion: Return early from slerpFlat if t is 0 or 1 #21183
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Description
In
Quaternion.slerpwe return early iftis 0 or 1, returningqaift0 andqbift1. We don't do the same inslerpFlatand it impacts performance in certain cases.1.000.000 slerpFlats without early return in msec (using the quats in in
Quaternion.tests.js):1.000.000 slerpFlats with early return:
There is some natural variation, but for
t0 andt1 the early return variant is on average 4-5x faster.In a real world example where
slerpFlatis used to interpolate between player rotations in a multiplayer scenario, I'm definitely seeing an improvement.Happy to code golf it a bit more, but I'm looking for feedback on whether the change is appropriate first.