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

Re: [PATCH JGIT] Method invokes inefficient Number constructor; use static valueOf instead

From
Yann Simon <yann.simon.fr@gmail.com>
Date
Mar 23, 2009, 10:36 UTC
Message-ID
<551f769b0903230336v116ce40bn8ce6a1a28b997fd@mail.gmail.com>
In-Reply-To
<20090319154958.GP23521@spearce.org>
2009/3/19 Shawn O. Pearce <spearce@spearce.org>:
Show 20 quoted lines
> Why I box with new Long() over Long.valueOf():
>
>  The standard only requires -128..127 to be cached.  A JRE can
>  cache value outside of this range if it chooses, but long has a
>  huge range, its unlikely to cache much beyond this required region.
>
>  Most pack files are in the 10 MB...100+ MB range.  Most objects
>  take more than 100 bytes in a pack, even compressed delta encoded.
>  Thus any object after the first is going to have its offset outside
>  of the cached range.
>
>  In other words, why waste the CPU cycles on the "cached range
>  bounds check" when I'm always going to fail and allocate.  I might
>  as well just allocate
>
>  These sections of code are rather performance critical for the
>  indexing phase of a pack receive, on either side of a connection.
>  I need to shave even more instructions out of the critical paths,
>  as its not fast enough as-is.  Using new Long() is quicker than
>  using Long.valueOf(), so new Long() it is.

It makes sense. Thank you for the explanation.

Yann
Previous: Shawn O. Pearce
Message 4 of 4 in “Method invokes inefficient Number constructor; use static valueOf instead”
  1. Method invokes inefficient Number constructor; use static valueOf insteadYann Simon, Mar 19, 2009
  2. Ferry Huberts (Pelagic)Mar 19, 2009
  3. Shawn O. PearceMar 19, 2009
  4. Yann SimonMar 23, 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.