Multiple replace function call can be replaced with a single for loop to improve performance ---------------------------------------------------------------------------------------------
Key: WICKET-3531 URL: https://issues.apache.org/jira/browse/WICKET-3531 Project: Wicket Issue Type: Bug Components: site Affects Versions: 1.4.9 Reporter: Xiaoming Shi {noformat} ./apache-wicket-1.4.9/src/wicket/src/main/java/org/apache/wicket/Component.java line: 1562 ./apache-wicket-1.4.9/src/wicket/src/main/java/org/apache/wicket/protocol/http/pagestore/DiskPageStore.java line: 410 {noformat} more than 3 consecutive replace() is called to remove the special characters. It's 3+ times slower than using a for loop replace them all. {noformat} e.g. - str.replace('a', '#'); - str.replace('b', '%'); + StringBuilder sb = new StringBuilder( str.length() ); + for (int i=0; i < str.length(); i++) + { + char c = str.charAt(i); + if ( c == 'a' ) + sb.append('#'); + else if ( c== 'b' ) + sb.append('%'); + else + sb.append(c); + } + str = sb.toString(); {noformat} This bug has the same problem as the MySQL bug : http://bugs.mysql.com/bug.php?id=45699 -- This message is automatically generated by JIRA. For more information on JIRA, see: http://www.atlassian.com/software/jira