From: Yann Simon <yann.simon.fr@gmail.com>
To: "Shawn O. Pearce" <spearce@spearce.org>
Cc: Robin Rosenberg <robin.rosenberg.lists@dewire.com>,
git <git@vger.kernel.org>
Subject: Re: [PATCH JGIT] Method invokes inefficient new String(String) constructor
Date: Thu, 19 Mar 2009 17:44:22 +0100 [thread overview]
Message-ID: <551f769b0903190944ofb03d14u1be316e1dacc1f86@mail.gmail.com> (raw)
In-Reply-To: <20090319160102.GQ23521@spearce.org>
2009/3/19 Shawn O. Pearce <spearce@spearce.org>:
> The line in question, p, is from the packed-refs file and
> contains the entire SHA-1 in hex form at the beginning of it.
> We've converted that into binary as an ObjectId, it uses 1/4 the
> space of the string portion.
>
> The Ref object, its ObjectId, and its name string, are going to be
> cached in a Map, probably long-term. We're better off shedding the
> 80 bytes of memory used to hold the hex SHA-1 then risk substring()
> deciding its "faster" to reuse the char[] then to make a copy of it.
Thany you for the explanation.
I learn something, and my tests confirm it.
The p.substring(...) can keep the entire array of char by only
updating the intern offset value.
new String(p.subtring(...)) make sure that the variable contains only
the final chars.
Yann
next prev parent reply other threads:[~2009-03-19 16:45 UTC|newest]
Thread overview: 12+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-03-19 9:15 [PATCH JGIT] Method invokes inefficient new String(String) constructor Yann Simon
2009-03-19 16:01 ` Shawn O. Pearce
2009-03-19 16:44 ` Yann Simon [this message]
2009-07-09 8:47 ` Yann Simon
2009-07-10 15:34 ` [PATCH] FindBugs: don't use new String(String) in RefDatabase Shawn O. Pearce
2009-07-13 8:07 ` Yann Simon
2009-07-13 14:53 ` [JGIT PATCH v2] " Shawn O. Pearce
2009-07-21 14:50 ` Robin Rosenberg
2009-07-21 15:03 ` Shawn O. Pearce
2009-07-21 19:47 ` Robin Rosenberg
-- strict thread matches above, loose matches on Subject: below --
2009-04-27 23:02 [PATCH JGIT] Computation of average could overflow Sohn, Matthias
2009-04-27 23:05 ` [PATCH JGIT] Method invokes inefficient new String(String) constructor Sohn, Matthias
2009-04-27 23:17 ` Shawn O. Pearce
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=551f769b0903190944ofb03d14u1be316e1dacc1f86@mail.gmail.com \
--to=yann.simon.fr@gmail.com \
--cc=git@vger.kernel.org \
--cc=robin.rosenberg.lists@dewire.com \
--cc=spearce@spearce.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).