[ https://issues.apache.org/jira/browse/BOOKKEEPER-964?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15770028#comment-15770028 ]
Hudson commented on BOOKKEEPER-964: ----------------------------------- SUCCESS: Integrated in Jenkins build bookkeeper-master #1604 (See [https://builds.apache.org/job/bookkeeper-master/1604/]) BOOKKEEPER-964: Ignore findbugs warnings (sijie: rev f53cbf82758af7f620ecd1506c76801bd0e75c86) * (edit) bookkeeper-server/src/main/resources/findbugsExclude.xml * (edit) bookkeeper-server/src/main/java/org/apache/bookkeeper/proto/BookieServer.java > 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)