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

clover edited comment on LANG-1679 at 12/31/21, 6:21 AM:
---------------------------------------------------------

Hi [~ggregory] 

I've test unwrap("@@@@@@this is a test wrapped by @@@@@@", "@@@@@@") via JMH 
with ".warmupIterations(5).measurementIterations(10).forks(2)" and got the 
following result:
Benchmark                   Mode  Cnt  Score    Error  Units
OptionalTest.newClassBench  avgt   20  0.028 ±  0.001  us/op
OptionalTest.rawClassBench  avgt   20  0.037 ±  0.005  us/op

It can be seen that the new method is a bit faster than the original one as 
expected, 0.028 us per call vs 0.037 us per call. 

 

Later I'll try to create a PR.


was (Author: JIRAUSER282854):
[~ggregory] 

I've test unwrap("@@@@@@this is a test wrapped by @@@@@@", "@@@@@@") via JMH 
with ".warmupIterations(5).measurementIterations(10).forks(2)" and got the 
following result:
Benchmark                   Mode  Cnt  Score    Error  Units
OptionalTest.newClassBench  avgt   20  0.028 ±  0.001  us/op
OptionalTest.rawClassBench  avgt   20  0.037 ±  0.005  us/op

It can be seen that the new method is a bit faster than the original one as 
expected, 0.028 us per call vs 0.037 us per call. 

 

Later I'll try to create a PR.

> StringUtils.unwrap() may be implemented faster
> ----------------------------------------------
>
>                 Key: LANG-1679
>                 URL: https://issues.apache.org/jira/browse/LANG-1679
>             Project: Commons Lang
>          Issue Type: Improvement
>            Reporter: clover
>            Priority: Minor
>
> public static String unwrap(final String str, final String wrapToken) {
>         if (isEmpty(str) || isEmpty(wrapToken) || str.length() < 2 * 
> wrapToken.length())
> {             return str;         }
>         if (startsWith(str, wrapToken) && endsWith(str, wrapToken)) {
>            {color:#de350b} // When we come here, startIndex must be 0. Thus, 
> startIndex is redundant.{color}
>             final int startIndex = str.indexOf(wrapToken);
> {color:#ff0000}            final int endIndex = 
> str.lastIndexOf(wrapToken);{color}
>             final int wrapLength = wrapToken.length();
> {color:#172b4d}           {color:#de350b}// (startIndex != -1 && endIndex != 
> -1) is always true{color}{color}
> {color:#ff0000}            if (startIndex != -1 && endIndex != -1) {{color}
> {color:#ff0000}                return str.substring(startIndex + wrapLength, 
> endIndex);{color}
> {color:#ff0000}            }{color}
>         }
>         return str;
>     }
>  
> *As commented above, unwrap() could be improved:*
> public static String unwrap(final String str, final String wrapToken) {
>         if (isEmpty(str) || isEmpty(wrapToken) || str.length() < 2 * 
> wrapToken.length()) \{             return str;         }
>         if (startsWith(str, wrapToken) && endsWith(str, wrapToken)) {
> {color:#ff0000}                return str.substring(wrapToken.length(), 
> str.lastIndexOf(wrapToken));{color}
> {color:#ff0000}            }{color}
>         }
>         return str;
>     }



--
This message was sent by Atlassian Jira
(v8.20.1#820001)

Reply via email to