RFR [8011215] optimization of CopyOnWriteArrayList.addIfAbsent() (original) (raw)
Ivan Gerasimov ivan.gerasimov at oracle.com
Tue Apr 2 21:11:58 UTC 2013
- Previous message: RFR [8011215] optimization of CopyOnWriteArrayList.addIfAbsent()
- Next message: RFR [8011215] optimization of CopyOnWriteArrayList.addIfAbsent()
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
Thanks for this change. There is a tradeoff here. If the element is never present, then the older code might be a little faster, because we can avoid re-traversing the array. Otherwise, the new code is better.
I've done a little testing on my side. I used Integer as an underlying type and set length of the array to the values from 1 to 100. My code shows a little performance gain - approximately 9%. I understand it may not be there for all cases, but at least for some cases it is there.
I prefer it your way (I hate unneeded allocation), but the code was intentionally written the other way. Let's hear from Doug...
Martin
On Tue, Apr 2, 2013 at 1:38 PM, Ivan Gerasimov <ivan.gerasimov at oracle.com <mailto:ivan.gerasimov at oracle.com>> wrote:
Please review my proposal for the CopyOnWriteArrayList.addIfAbsent() method optimization. http://washi.ru.oracle.com/~igerasim/webrevs/8011215/webrev/index.html <http://washi.ru.oracle.com/%7Eigerasim/webrevs/8011215/webrev/index.html>
This URL is not readable by external reviewers. The webrev has been copied here: http://cr.openjdk.java.net/~coffeys/webrev.8011215.ivan/ <http://cr.openjdk.java.net/%7Ecoffeys/webrev.8011215.ivan/> The "master" version of CopyOnWriteArrayList is here: http://gee.cs.oswego.edu/cgi-bin/viewcvs.cgi/jsr166/src/main/java/util/concurrent/CopyOnWriteArrayList.java?view=markup Thanks for the link! I see that the code in the master version is identical to the one I've been working on. So the optimization still could be applied. Sincerely, Ivan
- Previous message: RFR [8011215] optimization of CopyOnWriteArrayList.addIfAbsent()
- Next message: RFR [8011215] optimization of CopyOnWriteArrayList.addIfAbsent()
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]