You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomcat.apache.org by ma...@apache.org on 2023/02/03 13:06:53 UTC

[tomcat] branch 10.1.x updated: Speedup by removing non pattern replaceAll with constant arg

This is an automated email from the ASF dual-hosted git repository.

markt pushed a commit to branch 10.1.x
in repository https://gitbox.apache.org/repos/asf/tomcat.git


The following commit(s) were added to refs/heads/10.1.x by this push:
     new 14a0f91fd7 Speedup by removing non pattern replaceAll with constant arg
14a0f91fd7 is described below

commit 14a0f91fd7136a1f13480292cb790de18c7b3f16
Author: Andrey Bruykhov <an...@gmail.com>
AuthorDate: Thu Feb 2 15:38:32 2023 +0300

    Speedup by removing non pattern replaceAll with constant arg
    
    replaceAll("ABC", "") is non Pattern method and therefore must be replaced to simple fast replace()
    A proofs of changes: https://gist.github.com/tbw777/8a6ef60af21487c5faec67037099fd0b
---
 java/org/apache/catalina/startup/ClassLoaderFactory.java           | 4 ++--
 java/org/apache/catalina/util/ContextName.java                     | 2 +-
 java/org/apache/jasper/compiler/SmapUtil.java                      | 4 ++--
 java/org/apache/tomcat/buildutil/translate/Utils.java              | 2 +-
 test/jakarta/el/TestImportHandlerStandardPackages.java             | 2 +-
 test/org/apache/juli/TestFileHandler.java                          | 2 +-
 test/org/apache/tomcat/util/http/parser/TestMediaType.java         | 2 +-
 test/org/apache/tomcat/util/net/openssl/ciphers/TesterOpenSSL.java | 2 +-
 webapps/docs/changelog.xml                                         | 5 +++++
 9 files changed, 15 insertions(+), 10 deletions(-)

diff --git a/java/org/apache/catalina/startup/ClassLoaderFactory.java b/java/org/apache/catalina/startup/ClassLoaderFactory.java
index 394e8a0606..a451ccfb0c 100644
--- a/java/org/apache/catalina/startup/ClassLoaderFactory.java
+++ b/java/org/apache/catalina/startup/ClassLoaderFactory.java
@@ -295,7 +295,7 @@ public final class ClassLoaderFactory {
         // JARs. If these URLs are used to construct URLs for resources in a JAR
         // the URL will be used as is. It is therefore necessary to ensure that
         // the sequence "!/" is not present in a class loader URL.
-        String result = urlString.replaceAll("!/", "%21/");
+        String result = urlString.replace("!/", "%21/");
         return new URI(result).toURL();
     }
 
@@ -303,7 +303,7 @@ public final class ClassLoaderFactory {
     private static URL buildClassLoaderUrl(File file) throws MalformedURLException, URISyntaxException {
         // Could be a directory or a file
         String fileUrlString = file.toURI().toString();
-        fileUrlString = fileUrlString.replaceAll("!/", "%21/");
+        fileUrlString = fileUrlString.replace("!/", "%21/");
         return new URI(fileUrlString).toURL();
     }
 
diff --git a/java/org/apache/catalina/util/ContextName.java b/java/org/apache/catalina/util/ContextName.java
index ce412247c0..f426d41972 100644
--- a/java/org/apache/catalina/util/ContextName.java
+++ b/java/org/apache/catalina/util/ContextName.java
@@ -185,7 +185,7 @@ public final class ContextName {
      */
     public static ContextName extractFromPath(String path) {
         // Convert '\' to '/'
-        path = path.replaceAll("\\\\", "/");
+        path = path.replace("\\", "/");
         // Remove trailing '/'. Use while just in case a value ends in ///
         while (path.endsWith("/")) {
             path = path.substring(0, path.length() - 1);
diff --git a/java/org/apache/jasper/compiler/SmapUtil.java b/java/org/apache/jasper/compiler/SmapUtil.java
index c3e5b4c14e..42f4a04d25 100644
--- a/java/org/apache/jasper/compiler/SmapUtil.java
+++ b/java/org/apache/jasper/compiler/SmapUtil.java
@@ -776,12 +776,12 @@ public class SmapUtil {
 
         InputStream is = null;
         try {
-            is = cl.getResourceAsStream(className.replaceAll("\\.","/") + ".smap");
+            is = cl.getResourceAsStream(className.replace(".","/") + ".smap");
             if (is != null) {
                 encoding = SMAP_ENCODING;
                 found = true;
             } else {
-                is = cl.getResourceAsStream(className.replaceAll("\\.","/") + ".class");
+                is = cl.getResourceAsStream(className.replace(".","/") + ".class");
                 // Alternative approach would be to read the class file as per the
                 // JLS. That would require duplicating a lot of BCEL functionality.
                 int b = is.read();
diff --git a/java/org/apache/tomcat/buildutil/translate/Utils.java b/java/org/apache/tomcat/buildutil/translate/Utils.java
index 019b8b0fef..c617c8d975 100644
--- a/java/org/apache/tomcat/buildutil/translate/Utils.java
+++ b/java/org/apache/tomcat/buildutil/translate/Utils.java
@@ -123,7 +123,7 @@ public class Utils {
 
         result = ESCAPE_LEADING_SPACE.matcher(result).replaceAll("\\\\$1");
 
-        result = result.replaceAll("\t", "\\t");
+        result = result.replace("\t", "\\t");
 
         return result;
     }
diff --git a/test/jakarta/el/TestImportHandlerStandardPackages.java b/test/jakarta/el/TestImportHandlerStandardPackages.java
index ebd2d8610b..817079394d 100644
--- a/test/jakarta/el/TestImportHandlerStandardPackages.java
+++ b/test/jakarta/el/TestImportHandlerStandardPackages.java
@@ -119,7 +119,7 @@ public class TestImportHandlerStandardPackages {
                         // Skip directories
                         continue;
                     }
-                    Class<?> clazz = Class.forName(packageName + "." + name.replaceAll("\\.", "\\$"));
+                    Class<?> clazz = Class.forName(packageName + "." + name.replace(".", "$"));
                     if (!Modifier.isPublic(clazz.getModifiers())) {
                         // Skip non-public classes
                         continue;
diff --git a/test/org/apache/juli/TestFileHandler.java b/test/org/apache/juli/TestFileHandler.java
index 656c5fbb09..b6f4f2cdea 100644
--- a/test/org/apache/juli/TestFileHandler.java
+++ b/test/org/apache/juli/TestFileHandler.java
@@ -54,7 +54,7 @@ public class TestFileHandler {
         generateLogFiles(logsDir, PREFIX_3, SUFFIX_1, 3);
         generateLogFiles(logsDir, PREFIX_4, SUFFIX_1, 3);
 
-        String date = LocalDateTime.now().minusDays(3).toString().replaceAll(":", "-");
+        String date = LocalDateTime.now().minusDays(3).toString().replace(":", "-");
         File file = new File(logsDir, PREFIX_1 + date + SUFFIX_1);
         if (!file.createNewFile()) {
             Assert.fail("Unable to create " + file.getAbsolutePath());
diff --git a/test/org/apache/tomcat/util/http/parser/TestMediaType.java b/test/org/apache/tomcat/util/http/parser/TestMediaType.java
index 406ec15539..1ab82ffad0 100644
--- a/test/org/apache/tomcat/util/http/parser/TestMediaType.java
+++ b/test/org/apache/tomcat/util/http/parser/TestMediaType.java
@@ -158,7 +158,7 @@ public class TestMediaType {
         MediaType m = MediaType.parseMediaType(sr);
 
         Assert.assertEquals(CHARSET_WS, m.getCharset());
-        Assert.assertEquals(TYPES.replaceAll(" ", ""),
+        Assert.assertEquals(TYPES.replace(" ", ""),
                 m.toStringNoCharset());
     }
 
diff --git a/test/org/apache/tomcat/util/net/openssl/ciphers/TesterOpenSSL.java b/test/org/apache/tomcat/util/net/openssl/ciphers/TesterOpenSSL.java
index 4a9735f653..0df4cb26bb 100644
--- a/test/org/apache/tomcat/util/net/openssl/ciphers/TesterOpenSSL.java
+++ b/test/org/apache/tomcat/util/net/openssl/ciphers/TesterOpenSSL.java
@@ -276,7 +276,7 @@ public class TesterOpenSSL {
         String ciphers[] = stdout.split("\n");
         for (String cipher : ciphers) {
             // Handle rename for 1.1.0 onwards
-            cipher = cipher.replaceAll("EDH", "DHE");
+            cipher = cipher.replace("EDH", "DHE");
             if (first) {
                 first = false;
             } else {
diff --git a/webapps/docs/changelog.xml b/webapps/docs/changelog.xml
index 3f154a831e..4adcad2a73 100644
--- a/webapps/docs/changelog.xml
+++ b/webapps/docs/changelog.xml
@@ -124,6 +124,11 @@
         previous behavior following the removal of Java 9+ reflection code which
         caught the ISE. (remm)
       </fix>
+      <fix>
+        Refactor uses of <code>String.replaceAll()</code> to use
+        <code>String.replace()</code> where regular expressions where not being
+        used. Pull request <pr>581</pr> provided by Andrei Briukhov. (markt)
+      </fix>
     </changelog>
   </subsection>
   <subsection name="Coyote">


---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org
For additional commands, e-mail: dev-help@tomcat.apache.org