[ 
https://issues.apache.org/jira/browse/CAMEL-11348?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16031330#comment-16031330
 ] 

Zoltan Farkas commented on CAMEL-11348:
---------------------------------------

requestPath.toLowerCase potentially creates garbage (new String)

{code}
        String p1 = requestPath.toLowerCase(Locale.ENGLISH); // traverse string 
and create new instance if not already lowercase
        String p2 = consumerPath.toLowerCase(Locale.ENGLISH); // traverse 
string and create new instance if not already lowercase

        if (p1.equals(p2)) { // traverse strings and compare chars
            return true;
        }
{code}

meanwhile the equivalent::

{code}
    if (requestPath.equalsIgnoreCase(consumerPath)) { // traverses strings and 
compare chars case insensitively...
      return true;
    }
{code}

1) is shorter (more readable)
2) does 2 less string traversals and generates no garbage.

As the jira subject says it is a small optimization, but in my opinion 
worthwhile doing...



> Small Performance optimization in RestConsumerContextPathMatcher
> ----------------------------------------------------------------
>
>                 Key: CAMEL-11348
>                 URL: https://issues.apache.org/jira/browse/CAMEL-11348
>             Project: Camel
>          Issue Type: Improvement
>    Affects Versions: 2.19.0
>            Reporter: Zoltan Farkas
>            Assignee: Andrea Cosentino
>            Priority: Minor
>
> at 
> https://github.com/apache/camel/blob/57711e2696c32ef3ab99ad4ccc62f09bfda2ab40/camel-core/src/main/java/org/apache/camel/support/RestConsumerContextPathMatcher.java#L97
>   :
> {code}
>         String p1 = requestPath.toLowerCase(Locale.ENGLISH);
>         String p2 = consumerPath.toLowerCase(Locale.ENGLISH);
>         if (p1.equals(p2)) {
>             return true;
>         }
>         if (matchOnUriPrefix && p1.startsWith(p2)) {
>             return true;
>         }
>         return false;
> {code}
> we can improve to:
> {code}
>     if (requestPath.equalsIgnoreCase(consumerPath)) {
>       return true;
>     }
>     return matchOnUriPrefix && requestPath.regionMatches(true, 0, 
> consumerPath, 0, consumerPath.length());
> {code}



--
This message was sent by Atlassian JIRA
(v6.3.15#6346)

Reply via email to