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

Reply via email to