Browse Source

Optimize single-char wildcard path matching performance

Use lazy evaluation in SingleCharWildcardedPathElement to avoid
unnecessary Character.toLowerCase() calls.
Resolves performance TODO from 2017.

Closes gh-36095

Signed-off-by: Minkyu Park <rb6609@naver.com>
pull/36110/head
Minkyu Park 4 weeks ago committed by Brian Clozel
parent
commit
1240962d68
  1. 7
      spring-web/src/main/java/org/springframework/web/util/pattern/SingleCharWildcardedPathElement.java

7
spring-web/src/main/java/org/springframework/web/util/pattern/SingleCharWildcardedPathElement.java

@ -85,8 +85,11 @@ class SingleCharWildcardedPathElement extends PathElement {
else { else {
for (int i = 0; i < this.len; i++) { for (int i = 0; i < this.len; i++) {
char ch = this.text[i]; char ch = this.text[i];
// TODO revisit performance if doing a lot of case insensitive matching char valCh = value.charAt(i);
if ((ch != '?') && (ch != Character.toLowerCase(value.charAt(i)))) { if (ch == valCh || ch == '?') {
continue;
}
if (ch != Character.toLowerCase(valCh)) {
return false; return false;
} }
} }

Loading…
Cancel
Save