https://issues.apache.org/bugzilla/show_bug.cgi?id=53822
Priority: P2
Bug ID: 53822
Assignee: [email protected]
Summary: performance of IdentityStack.containsAll()
Severity: normal
Classification: Unclassified
OS: Linux
Reporter: [email protected]
Hardware: PC
Status: NEW
Version: 1.8.4
Component: Core
Product: Ant
Created attachment 29322
--> https://issues.apache.org/bugzilla/attachment.cgi?id=29322&action=edit
patchSmall.diff
"IdentityStack.containsAll(Collection coll)" has a similar performance
problem as the previously fixed Bug 53622 (for
"VectorSet.retainAll(Collection coll)"). The problem is that
"containsAll(Collection coll)" performs "this.contains(e.next())",
which is slow because "this" is an IdentityStack, i.e., a Vector, and
therefore "contains" is linear.
I attached a patch (patchSmall.diff) similar to the one used by Jesse
Glick in Bug 53622. I attached an improved patch (patchFull.diff)
that builds the IdentityHashMap lazily, which gives slightly better
performance than patchSmall.diff (which builds IdentityHashMap
eagerly). I also attached a test that exposes this problem. For this
test, patchSmall.diff provides a 676X speedup on my machine.
To run the test, just do:
$ java Test
The output for the un-patched version is:
Time is 17572
The output for the patched version is:
Time is 26
--
You are receiving this mail because:
You are the assignee for the bug.