git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: [PATCH] FindBugs: don't use new String(String) in RefDatabase

From
Yann Simon <yann.simon.fr@gmail.com>
Date
Jul 13, 2009, 08:07 UTC
Message-ID
<551f769b0907130107j51d32e4er54e125f9dc61dd80@mail.gmail.com>
In-Reply-To
<20090710153441.GF11191@spearce.org>
2009/7/10 Shawn O. Pearce <spearce@spearce.org>:
Show 22 quoted lines
>  Yann Simon <yann.simon.fr@gmail.com> wrote:
>  >
>  > However, using the trick newString = new String(aString.substring(),
>  > i) does not work on all JVM.
>  > With an IBM JVM, the newString will still contain the original array of chars.
>  >
>  > Another solution that work on all JVM could be:
>  > newString = new String(aString.substring(i).toCharArray())
>  > Or
>  > newString = new String(aString.toCharArray(), i, aString.length() - i)
>  >
>  > I like the latter one.
>
>  I prefer this.  It should always do what we want, and at a lower
>  temporary memory footprint (one less copy of the name).  IIRC Robin
>  rejected it earlier because it wasn't obvious what we were doing. I
>  say hogwash, its clear as mud.
>
> +       private static String copy(final String src, final int off, final int end) {
> +               return new StringBuilder(end - off).append(src, off, end).toString();
> +       }
> +

This method is quite clear. One line javadoc would make it even clearer... :p (and maybe make Robin happy)

And you're right: by using a StringBuilder, we need one less arraycopy.

After committing your change, we can remove the entry to silent FindBugs. (commit 21c3d82824075cd1f140b3bcf252dfaffe0fc96c)

Yann
Previous: Shawn O. PearceNext: Shawn O. Pearce
Message 6 of 10 in “Method invokes inefficient new String(String) constructor”
  1. Method invokes inefficient new String(String) constructorYann Simon, Mar 19, 2009
  2. Shawn O. PearceMar 19, 2009
  3. Yann SimonMar 19, 2009
  4. Yann SimonJul 9, 2009
  5. FindBugs: don't use new String(String) in RefDatabaseShawn O. Pearce, Jul 10, 2009
  6. Yann SimonJul 13, 2009
  7. FindBugs: don't use new String(String) in RefDatabaseShawn O. Pearce, Jul 13, 2009
  8. Robin RosenbergJul 21, 2009
  9. Shawn O. PearceJul 21, 2009
  10. Robin RosenbergJul 21, 2009

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.