From 24b2faa6d1e334cef6bf7acd6624c507c290e190 Mon Sep 17 00:00:00 2001 From: Adrian Hughes Date: Thu, 18 Feb 2021 20:38:19 +0200 Subject: [PATCH 1/4] Optimize applyFilter() to avoid redundant String operations if 'showingHint' == true, then many potentially expensive String operations are being executed on an empty string. This change wraps these operations in an if block which will only run them when needed. --- .../contributions/ui/FilterJTextField.java | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/app/src/cc/arduino/contributions/ui/FilterJTextField.java b/app/src/cc/arduino/contributions/ui/FilterJTextField.java index f4cb3420340..812fb48d83a 100644 --- a/app/src/cc/arduino/contributions/ui/FilterJTextField.java +++ b/app/src/cc/arduino/contributions/ui/FilterJTextField.java @@ -101,13 +101,14 @@ private void spawnTimer() { } public void applyFilter() { - String filter = showingHint ? "" : getText(); - filter = filter.toLowerCase(); - - // Replace anything but 0-9, a-z, or : with a space - filter = filter.replaceAll("[^\\x30-\\x39^\\x61-\\x7a^\\x3a]", " "); - - onFilter(filter.split(" ")); + if (!showingHint) { + String filter = getText().toLowerCase();+ + + // Replace anything but 0-9, a-z, or : with a space + filter = filter.replaceAll("[^\\x30-\\x39^\\x61-\\x7a^\\x3a]", " "); + + onFilter(filter.split(" ")); + } } protected void onFilter(String[] strings) { From dc6a7a3aa42d232f57de57c3d0899e07c1475735 Mon Sep 17 00:00:00 2001 From: Adrian Hughes Date: Fri, 19 Feb 2021 07:37:39 +0200 Subject: [PATCH 2/4] Update FilterJTextField.java --- app/src/cc/arduino/contributions/ui/FilterJTextField.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/src/cc/arduino/contributions/ui/FilterJTextField.java b/app/src/cc/arduino/contributions/ui/FilterJTextField.java index 812fb48d83a..3a288256600 100644 --- a/app/src/cc/arduino/contributions/ui/FilterJTextField.java +++ b/app/src/cc/arduino/contributions/ui/FilterJTextField.java @@ -102,7 +102,7 @@ private void spawnTimer() { public void applyFilter() { if (!showingHint) { - String filter = getText().toLowerCase();+ + String filter = getText().toLowerCase(); // Replace anything but 0-9, a-z, or : with a space filter = filter.replaceAll("[^\\x30-\\x39^\\x61-\\x7a^\\x3a]", " "); From a2a918ffb35654bf0da67b956fa42527d5ae984c Mon Sep 17 00:00:00 2001 From: Adrian Hughes Date: Fri, 9 Apr 2021 08:55:13 +0200 Subject: [PATCH 3/4] applyFilter() will now always call onFilter() regardless of showingHint. Simply the argument will change --- app/src/cc/arduino/contributions/ui/FilterJTextField.java | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/app/src/cc/arduino/contributions/ui/FilterJTextField.java b/app/src/cc/arduino/contributions/ui/FilterJTextField.java index 3a288256600..9a8b6a7d7ac 100644 --- a/app/src/cc/arduino/contributions/ui/FilterJTextField.java +++ b/app/src/cc/arduino/contributions/ui/FilterJTextField.java @@ -101,14 +101,16 @@ private void spawnTimer() { } public void applyFilter() { + String[] filteredText = new String[0]; if (!showingHint) { String filter = getText().toLowerCase(); // Replace anything but 0-9, a-z, or : with a space filter = filter.replaceAll("[^\\x30-\\x39^\\x61-\\x7a^\\x3a]", " "); - onFilter(filter.split(" ")); - } + filteredText = filter.split(" ") + } + onFilter(filteredText) } protected void onFilter(String[] strings) { From 924ff48666c9e6f0aa38cd5121b0e45dba9070ee Mon Sep 17 00:00:00 2001 From: Adrian Hughes Date: Fri, 9 Apr 2021 09:53:29 +0200 Subject: [PATCH 4/4] Update FilterJTextField.java --- app/src/cc/arduino/contributions/ui/FilterJTextField.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/src/cc/arduino/contributions/ui/FilterJTextField.java b/app/src/cc/arduino/contributions/ui/FilterJTextField.java index 9a8b6a7d7ac..83aeba45430 100644 --- a/app/src/cc/arduino/contributions/ui/FilterJTextField.java +++ b/app/src/cc/arduino/contributions/ui/FilterJTextField.java @@ -108,9 +108,9 @@ public void applyFilter() { // Replace anything but 0-9, a-z, or : with a space filter = filter.replaceAll("[^\\x30-\\x39^\\x61-\\x7a^\\x3a]", " "); - filteredText = filter.split(" ") + filteredText = filter.split(" "); } - onFilter(filteredText) + onFilter(filteredText); } protected void onFilter(String[] strings) {