From d60dc31fe584fc52716286cacc37c18347abc224 Mon Sep 17 00:00:00 2001 From: Omar Orozco Date: Thu, 26 Mar 2026 15:46:42 -0600 Subject: [PATCH 1/3] NIT: Avoid String.format and Long.valueOf invocations when LogCat is disabled for better performance at Trace.incrementMetric. --- .../main/java/com/google/firebase/perf/metrics/Trace.java | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/firebase-perf/src/main/java/com/google/firebase/perf/metrics/Trace.java b/firebase-perf/src/main/java/com/google/firebase/perf/metrics/Trace.java index 91e5f44b4a0..f0bae8db8e0 100644 --- a/firebase-perf/src/main/java/com/google/firebase/perf/metrics/Trace.java +++ b/firebase-perf/src/main/java/com/google/firebase/perf/metrics/Trace.java @@ -348,8 +348,10 @@ public void incrementMetric(@NonNull String metricName, long incrementBy) { // thread-safer Counter counter = obtainOrCreateCounterByName(metricName.trim()); counter.increment(incrementBy); - logger.debug( - "Incrementing metric '%s' to %d on trace '%s'", metricName, counter.getCount(), name); + if (logger.isLogcatEnabled()) { + logger.debug( + "Incrementing metric '%s' to %d on trace '%s'", metricName, counter.getCount(), name); + } } /** From 08355e08bf884523972df17595804871323ce60c Mon Sep 17 00:00:00 2001 From: Omar Orozco Date: Thu, 26 Mar 2026 16:45:56 -0600 Subject: [PATCH 2/3] NIT: Avoid String.format interactions, making use of String concatenation instead. --- .../main/java/com/google/firebase/perf/metrics/Trace.java | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/firebase-perf/src/main/java/com/google/firebase/perf/metrics/Trace.java b/firebase-perf/src/main/java/com/google/firebase/perf/metrics/Trace.java index f0bae8db8e0..2c5df82913b 100644 --- a/firebase-perf/src/main/java/com/google/firebase/perf/metrics/Trace.java +++ b/firebase-perf/src/main/java/com/google/firebase/perf/metrics/Trace.java @@ -350,7 +350,13 @@ public void incrementMetric(@NonNull String metricName, long incrementBy) { counter.increment(incrementBy); if (logger.isLogcatEnabled()) { logger.debug( - "Incrementing metric '%s' to %d on trace '%s'", metricName, counter.getCount(), name); + "Incrementing metric '" + + metricName + + "' to " + + counter.getCount() + + " on trace '" + + name + + "'"); } } From 7cd925c318a19796fa4b0d01144ba58a8d6b1b5b Mon Sep 17 00:00:00 2001 From: Omar Orozco Date: Fri, 24 Apr 2026 02:01:39 -0600 Subject: [PATCH 3/3] NIT: Introducing enum values reference optimization. --- .../firebase/perf/metrics/validator/PerfMetricValidator.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/firebase-perf/src/main/java/com/google/firebase/perf/metrics/validator/PerfMetricValidator.java b/firebase-perf/src/main/java/com/google/firebase/perf/metrics/validator/PerfMetricValidator.java index 20de8ae642a..fc77cca3ce2 100644 --- a/firebase-perf/src/main/java/com/google/firebase/perf/metrics/validator/PerfMetricValidator.java +++ b/firebase-perf/src/main/java/com/google/firebase/perf/metrics/validator/PerfMetricValidator.java @@ -33,6 +33,8 @@ public abstract class PerfMetricValidator { private static final Pattern ATTRIBUTE_KEY_PATTERN = Pattern.compile("^(?!(firebase_|google_|ga_))[A-Za-z][A-Za-z_0-9]*"); + private static final Constants.CounterNames[] validCounterNames = Constants.CounterNames.values(); + /** * Creates a list of PerfMetricValidator classes based on the contents of PerfMetric * @@ -126,7 +128,6 @@ public static String validateMetricName(@Nullable String str) { return String.format( Locale.US, "Metric name must not exceed %d characters", Constants.MAX_COUNTER_ID_LENGTH); } else if (str.startsWith("_")) { - Constants.CounterNames[] validCounterNames = Constants.CounterNames.values(); for (Constants.CounterNames counterName : validCounterNames) { if (counterName.toString().equals(str)) { return null;