JDK-6982173: Small problem causing thousands of wasted CPU hours
Jan Peter Stotz
jpstotz at gmx.de
Thu Jan 24 18:53:26 UTC 2019
Unfortunately in my last message I made mistake and mixed up the two
sections. The main reasons for were first too many coding hours
yesterday and second I had investigated this issue not yesterday but
some weeks ago. During the last weeks I searched a way to participate in
OpenJDK except for some high-traffic mailing list (that is IMHO
development as it was in the last millennium). Especially the useless
bug tracker (as it is only a bug viewer) is really not understandable to me.
Federico Peralta Schaffner wrote:
> Now, how have you come to the conclusion that the problem is in the first
> branch of the above if statement, and that it is related to the passed
> collection's implementation details of the remove(Object o) method? I think
> this is not the problem, as elements are removed from this set and not from
> the passed collection.
You are right, the first section is not the problem but the second one
is. I came to the same conclusion as you did when I first investigated
However I would not call a marker interface HashAccess as it reflects a
technology not an implementation characteristic. E.g. a TreeSet has an
access time of O(log(n)) which may also be sufficiently fast enough for
the second code part of AbstractSet.removeAll() but it's implementation
does not base on hashing.
Therefore my suggestion is still to simply check if the other collection
is a Set and only if it is one use the second code part.
PS: If somebody answers please cc me personally as I only use the digest
mode of this list.
More information about the core-libs-dev