StringBuilder version of java.util.regex.Matcher.append*

Xueming Shen xueming.shen at oracle.com
Sat Mar 22 02:34:02 UTC 2014


let's add the StringBuilder method(s), if you can provide an updated 
version, I can run the rest (since it's
to add new api, there is an internal CCC process need to go through).

-Sherman

On 3/21/14 5:18 PM, Jeremy Manson wrote:
> So, this is all a little opaque to me.  How do we make the go/no-go 
> decision on something like this?  Everyone who has chimed in seems to 
> think it is a good idea.
>
> Jeremy
>
>
> On Thu, Mar 20, 2014 at 10:38 AM, Jeremy Manson 
> <jeremymanson at google.com <mailto:jeremymanson at google.com>> wrote:
>
>     Sherman,
>
>     If you had released it then (which you wouldn't have been able to
>     do, because you would have to wait another two years for Java 7),
>     you would have found that it improved performance even with C2.
>      It is only post-escape-analysis that the performance in C2 equalized.
>
>     Anyway, I think adding the StringBuilder variant and deferring /
>     dealing with the Appendable differently is the right approach, FWIW.
>
>     Jeremy
>
>
>     On Thu, Mar 20, 2014 at 10:25 AM, Xueming Shen
>     <xueming.shen at oracle.com <mailto:xueming.shen at oracle.com>> wrote:
>
>         2009? I do have something similar back to 2009 :-)
>
>         http://cr.openjdk.java.net/~sherman/regex_replace/webrev/
>         <http://cr.openjdk.java.net/%7Esherman/regex_replace/webrev/>
>
>         Then the ball was dropped around the discussion of whether or not
>         the IOE should be thrown.
>
>         But if we are going to/have to have explicit
>         StringBuilder/Buffer pair
>         anyway, then we can keep the Appendable version as private for now
>         and deal with the StringBuilder and Appendable as two separate
>         issues.
>
>         -Sherman
>
>
>         On 03/20/2014 09:52 AM, Jeremy Manson wrote:
>
>             That's definitely an improvement - I think that when I
>             wrote this (circa
>             2009), I didn't think about Appendable.
>
>             I take it my argument convinced someone?  :)
>
>             Jeremy
>
>
>             On Thu, Mar 20, 2014 at 1:32 AM, Peter
>             Levart<peter.levart at gmail.com
>             <mailto:peter.levart at gmail.com>>wrote:
>
>                 On 03/19/2014 06:51 PM, Jeremy Manson wrote:
>
>                     I'm told that the diff didn't make it.  I've put
>                     it in a Google drive
>                     folder...
>
>                     https://drive.google.com/file/d/0B_GaXa6O4K5LY3Y0aHpranM3aEU/
>                     edit?usp=sharing
>
>                     Jeremy
>
>                 Hi Jeremy,
>
>                 Your factoring-out of expandReplacement() method
>                 exposed an opportunity to
>                 further optimize the code. Instead of creating
>                 intermediate StringBuilder
>                 instance for each expandReplacement() call, this
>                 method could append
>                 directly to resulting StringBuffer/StringBuilder, like
>                 in the following:
>
>                 http://cr.openjdk.java.net/~plevart/jdk9-dev/MatcherWithStringBuilder/
>                 <http://cr.openjdk.java.net/%7Eplevart/jdk9-dev/MatcherWithStringBuilder/>
>                 webrev.01/
>
>
>                 Regards, Peter
>
>
>
>                     On Wed, Mar 19, 2014 at 10:41 AM, Jeremy
>                     Manson<jeremymanson at google.com
>                     <mailto:jeremymanson at google.com>>
>                     wrote:
>
>                       Hi folks,
>
>                         We've had this internally for a while, and I
>                         keep meaning to bring it up
>                         here.  The Matcher class has a few public
>                         methods that take
>                         StringBuffers,
>                         and we've found it useful to add similar
>                         versions that take
>                         StringBuilders.
>
>                         It has two benefits:
>
>                         - Users don't have to convert from one to the
>                         other when they want to use
>                         the method in question.  The symmetry is nice.
>
>                         - The StringBuilder variants are faster (if
>                         lock optimizations don't kick
>                         in, which happens in the interpreter and the
>                         client compiler).  For
>                         interpreted / client-compiled code, we saw
>                         something like a 25% speedup
>                         on
>                         String.replaceAll(), which calls into this code.
>
>                         Any interest?  Diff attached.
>
>                         Jeremy
>
>
>
>
>




More information about the core-libs-dev mailing list