RFR 8230162: ScopeImpl.remove() has O(N) performance
Jan Lahoda
jan.lahoda at oracle.com
Wed Sep 18 07:38:26 UTC 2019
I've added logging to count how many Entries are created, and there's a
little above 500000 instances created for java.base and a little less
for java.desktop. So if the Entry would be 8 bytes bigger, it would be
about 4MB, which does not sound terrible. So maybe we should go with
version .00.
Jan
On 18. 09. 19 3:10, Brad Corso wrote:
> Hi Jan, are you okay moving forward with
> http://cr.openjdk.java.net/~ronsh/8230162/webrev.01/?
>
> On Wed, Sep 4, 2019 at 5:15 AM Ron Shapiro <ronshapiro at google.com
> <mailto:ronshapiro at google.com>> wrote:
>
> Here's the updated webrev that Brad mentioned in his last message:
> http://cr.openjdk.java.net/~ronsh/8230162/webrev.01/
>
> On Wed, Aug 28, 2019 at 2:40 AM Brad Corso <bcorso at google.com
> <mailto:bcorso at google.com>> wrote:
>
> I believe "Do you have any estimates of the increase in size
> in typical
> usage, due to the extra field in Scope?" (Jon)
>
> I was seeing noticeably bad performance once the size of the
> Entry.sibling linked list reached ~10000, and the max I saw was
> ~30000 in a single scope. Given that an additional reference
> adds 32/64b, this could add up to 120/240Kb for the cases I saw.
>
> I'd add, is there a chance to get an improvement in
> Scope.remove speed
> without making ScopeImpl.Entry bigger (assuming it gets
> bigger(?))? One
> possibility that occurred to me is that we could try not to
> remove the
> things from elems, but only mark them as removed. We would
> need to do
> filtering (and possibly the actual removal) while reading
> from the Scope
> (in getSymbols), so this is a different kind of trade-off.
>
> (Overall, I guess the question is whether we are trading
> problems with
>
> Scope.remove speed in some cases for out-of-memory problems
> in other cases.)
>
> Thanks, I've verified your suggestion also gives us the
> performance improvements, so this change is okay with me.
>
>
>
> On Tue, Aug 27, 2019 at 12:05 AM Jan Lahoda
> <jan.lahoda at oracle.com <mailto:jan.lahoda at oracle.com>> wrote:
>
> On 27. 08. 19 0:06, Brad Corso wrote:
> > Sorry, what's the question?
>
> I believe "Do you have any estimates of the increase in size
> in typical
> usage, due to the extra field in Scope?" (Jon)
>
> I'd add, is there a chance to get an improvement in
> Scope.remove speed
> without making ScopeImpl.Entry bigger (assuming it gets
> bigger(?))? One
> possibility that occurred to me is that we could try not to
> remove the
> things from elems, but only mark them as removed. We would
> need to do
> filtering (and possibly the actual removal) while reading
> from the Scope
> (in getSymbols), so this is a different kind of trade-off.
>
> (Overall, I guess the question is whether we are trading
> problems with
> Scope.remove speed in some cases for out-of-memory problems
> in other cases.)
>
> Jan
>
> >
> > On Mon, Aug 26, 2019 at 1:54 PM Ron Shapiro
> <ronshapiro at google.com <mailto:ronshapiro at google.com>
> > <mailto:ronshapiro at google.com
> <mailto:ronshapiro at google.com>>> wrote:
> >
> > Adding Brad back in to the thread since he would know
> best
> >
> > בתאריך יום ב׳, 26 באוג׳ 2019, 19:40, מאת Jonathan Gibbons
> > <jonathan.gibbons at oracle.com
> <mailto:jonathan.gibbons at oracle.com>
> <mailto:jonathan.gibbons at oracle.com
> <mailto:jonathan.gibbons at oracle.com>>>:
> >
> >
> > On 8/26/19 9:12 AM, Ron Shapiro wrote:
> > >
> > > Note that the patch was prepared by my
> coworker, Brad (cc'd).
> > I wasn't
> > > sure what to do to make sure that he was
> attributed correctly.
> >
> >
> > Mention this when you have a sponsor to push the
> changeset, so
> > that it
> > can be marked with "Contributed-By:"
> >
> > -- Jon
> >
>
More information about the compiler-dev
mailing list