Reduce object allocations in MotionEvent's direction computation #2447
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.
This PR introduces a minor but impactful performance optimization within the
MotionEventclass.Previously, the
computeTargetDirection()method repeatedly created newQuaternionobjects (qandq2) on each call when handlingPathandPathAndRotationdirection types. This constant object allocation can lead to unnecessary garbage collection overhead, particularly in performance-critical game loops or animations.To address this, I've refactored the method to utilize a single, reusable
Quaternionclass member variable (tempRotation). By reusing this existing object, we significantly reduce memory allocations and subsequent garbage collection cycles, resulting in a modest but noticeable performance improvement, especially when many MotionEvents are active or when the method is called frequently.