You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@wicket.apache.org by "Xiaoming Shi (JIRA)" <ji...@apache.org> on 2011/03/13 04:18:59 UTC

[jira] Created: (WICKET-3531) Multiple replace function call can be replaced with a single for loop to improve performance

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

[jira] Updated: (WICKET-3531) Multiple replace function call can be replaced with a single for loop to improve performance

Posted by "Bruno Borges (JIRA)" <ji...@apache.org>.
     [ https://issues.apache.org/jira/browse/WICKET-3531?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Bruno Borges updated WICKET-3531:
---------------------------------

    Attachment: test.java

I disagree. 

Run this class to evaluate the performance. It has a difference of +- 100ms. I don't think this is something that should be considered.

> 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
>         Attachments: test.java
>
>
> {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

[jira] Resolved: (WICKET-3531) Multiple replace function call can be replaced with a single for loop to improve performance

Posted by "Igor Vaynberg (JIRA)" <ji...@apache.org>.
     [ https://issues.apache.org/jira/browse/WICKET-3531?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Igor Vaynberg resolved WICKET-3531.
-----------------------------------

    Resolution: Won't Fix
      Assignee: Igor Vaynberg

we will not fix this until this shows up as a hotspot in the profiler. until then code reusability and maintainability are more important.

> 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
>            Assignee: Igor Vaynberg
>         Attachments: test.java
>
>
> {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