diff options
| author | 2025-02-07 10:36:36 -0800 | |
|---|---|---|
| committer | 2025-02-07 15:25:25 -0800 | |
| commit | ab77bd971df98bd46332a0e9b69899ecbc643003 (patch) | |
| tree | e22921057b6531e74bb20dc2b9aff0ba64cd3aeb | |
| parent | 1d883bc1806844474fc79d53c5d3836f1d04ab12 (diff) | |
Don't call 'getShortDescription' when tracing is not enabled
The call to 'getShortDescription' is expensive. Currently, it's called
even if tracing is not enabled, which slows down input processing. Move
this into an 'if' statement, which will ensure that it's only called if
tracing is enabled.
If we find that this is still too expensive (slows down input processing
too much when tracing is enabled), we should consider getting rid of
this trace completely.
Bug: 395115521
Flag: EXEMPT bugfix
Test: none
Change-Id: Icbf2ea32e6ebc4c944d214c953b11a5d7a7cdede
| -rw-r--r-- | core/java/android/view/InputEventReceiver.java | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/core/java/android/view/InputEventReceiver.java b/core/java/android/view/InputEventReceiver.java index 1c36eaf99afa..9c1f134bff3e 100644 --- a/core/java/android/view/InputEventReceiver.java +++ b/core/java/android/view/InputEventReceiver.java @@ -290,9 +290,15 @@ public abstract class InputEventReceiver { @SuppressWarnings("unused") @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553) private void dispatchInputEvent(int seq, InputEvent event) { - Trace.traceBegin(Trace.TRACE_TAG_INPUT, "dispatchInputEvent " + getShortDescription(event)); + if (Trace.isTagEnabled(Trace.TRACE_TAG_INPUT)) { + // This 'if' block is an optimization - without it, 'getShortDescription' will be + // called unconditionally, which is expensive. + Trace.traceBegin(Trace.TRACE_TAG_INPUT, + "dispatchInputEvent " + getShortDescription(event)); + } mSeqMap.put(event.getSequenceNumber(), seq); onInputEvent(event); + // If tracing is not enabled, `traceEnd` is a no-op (so we don't need to guard it with 'if') Trace.traceEnd(Trace.TRACE_TAG_INPUT); } |