[ https://issues.apache.org/jira/browse/BOOKKEEPER-964?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15766623#comment-15766623 ]
ASF GitHub Bot commented on BOOKKEEPER-964: ------------------------------------------- GitHub user eolivelli opened a pull request: https://github.com/apache/bookkeeper/pull/96 BOOKKEEPER-964 Ignore findbugs warnings You can merge this pull request into a Git repository by running: $ git pull https://github.com/eolivelli/bookkeeper BOOKKEEPER-964-findbugs Alternatively you can review and apply these changes as the patch at: https://github.com/apache/bookkeeper/pull/96.patch To close this pull request, make a commit to your master/trunk branch with (at least) the following in the commit message: This closes #96 ---- commit 3104c6fafcdafc208b7302fd3080f41a72a060a0 Author: eolivelli <eolive...@gmail.com> Date: 2016-12-21T09:46:30Z Ignore findbugs warnings ---- > Add concurrent maps and sets for primitive types > ------------------------------------------------ > > Key: BOOKKEEPER-964 > URL: https://issues.apache.org/jira/browse/BOOKKEEPER-964 > Project: Bookkeeper > Issue Type: Improvement > Reporter: Matteo Merli > Assignee: Matteo Merli > Fix For: 4.5.0 > > > In BookKeeper there are many instances of maps and sets that use ledger id > and entry ids as keys or values. JDK concurrent collections have the overhead > of boxing all the primitive values into objects (eg: long --> Long) that would > need to be allocated from the heap. In addition to that, JDK map > implementations > are closed hash tables and they will require at least one more allocation to > hold > the linked-list/tree node. > There are already available libraries that offer primitive collections with > zero-allocation, but none of these support concurrent maps/sets. > We have added a handful of specializations, all based on the same > implementation > idea. We have a hash table which is broken down into multiple sections. Each > sections, on its own, is an open hash table with linear probing, protected by > a stamped lock. > All insertions, lookups and iterations on these collections are allocation > free. > {noformat} > ConcurrentLongHashMap: Map<long, Object> > ConcurrentLongHashSet: Set<long> > ConcurrentLongLongHashMap: Map<long, long> > ConcurrentLongLongPairHashMap: Map< Pair<long, long>, Pair<long, long> > > ConcurrentOpenHashMap: Map<Object, Object> > ConcurrentOpenHashSet: Set<Object> > {noformat} -- This message was sent by Atlassian JIRA (v6.3.4#6332)