commons-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Adrian Nistor (JIRA)" <>
Subject [jira] [Created] (COLLECTIONS-410) SetUniqueList.addAll() is very slow
Date Tue, 19 Jun 2012 20:38:44 GMT
Adrian Nistor created COLLECTIONS-410:

             Summary: SetUniqueList.addAll() is very slow
                 Key: COLLECTIONS-410
             Project: Commons Collections
          Issue Type: Bug
         Environment: java 1.6.0_24
Ubuntu 11.10
            Reporter: Adrian Nistor
         Attachments:, patch.diff


I am encountering a performance problem in SetUniqueList.addAll().  It
appears in revision 1351837 (19 June 2012).  I attached a test that
exposes this problem and a patch that fixes it.  On my machine, for
this test, the patch provides a 540X speedup.

To run the test, just do:

$ java Test

The output for the un-patched version is:
Time is 2706

The output for the patched version is:
Time is 5

As the patch shows, the problem is that
SetUniqueList.addAll(int index, Collection<? extends E> coll)
"add(index, e)" for each element in "coll". This is very expensive, 
because each "add(index, e)" performs a 
LinkedList.add(int index, E element), which requires traversing the 
LinkedList to find the index.

The patched version avoids this cost by inserting all the elements at
once, thus performing only one insert.

Is this a bug? If so, can you please confirm that the patch is



This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators:!default.jspa
For more information on JIRA, see:


View raw message