groovyx.gpars.extra166y
Class PAS.UniquifierTable

java.lang.Object
  extended by java.util.concurrent.atomic.AtomicLongArray
      extended by groovyx.gpars.extra166y.PAS.UniquifierTable
All Implemented Interfaces:
java.io.Serializable
Enclosing class:
PAS

static final class PAS.UniquifierTable
extends java.util.concurrent.atomic.AtomicLongArray

Base class of fixed-size hash tables for uniquification. Opportunistically subclasses AtomicLongArray. The high word of each slot is the cached massaged hash of an element, and the low word contains its index, plus one, to ensure that a zero tab entry means empty. The mechanics for this are just folded into the main addElements method. Each leaf step places source array elements into table, Even though this table undergoes a lot of contention when elements are concurrently inserted by parallel threads, it is generally faster to do this than to have separate tables and then merge them.


Field Summary
(package private)  boolean byIdentity
           
(package private)  AbstractParallelAnyArray pap
           
 
Constructor Summary
PAS.UniquifierTable(int size, AbstractParallelAnyArray pap, boolean byIdentity)
           
 
Method Summary
(package private)  int addDoubles(int lo, int hi)
           
(package private)  int addLongs(int lo, int hi)
           
(package private)  int addObjects(int lo, int hi)
           
(package private) static int hash(int h)
           
(package private) static int tableSizeFor(int n)
          Returns a good size for table
(package private)  double[] uniqueDoubles(int size)
           
(package private)  long[] uniqueLongs(int size)
           
(package private)  java.lang.Object[] uniqueObjects(int size)
          Returns new array holding all elements.
 
Methods inherited from class java.util.concurrent.atomic.AtomicLongArray
addAndGet, compareAndSet, decrementAndGet, get, getAndAdd, getAndDecrement, getAndIncrement, getAndSet, incrementAndGet, lazySet, length, set, toString, weakCompareAndSet
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

pap

final AbstractParallelAnyArray pap

byIdentity

final boolean byIdentity
Constructor Detail

PAS.UniquifierTable

PAS.UniquifierTable(int size,
                    AbstractParallelAnyArray pap,
                    boolean byIdentity)
Method Detail

tableSizeFor

static int tableSizeFor(int n)
Returns a good size for table


hash

static int hash(int h)

addObjects

int addObjects(int lo,
               int hi)

addDoubles

int addDoubles(int lo,
               int hi)

addLongs

int addLongs(int lo,
             int hi)

uniqueObjects

java.lang.Object[] uniqueObjects(int size)
Returns new array holding all elements.


uniqueDoubles

double[] uniqueDoubles(int size)

uniqueLongs

long[] uniqueLongs(int size)

Copyright © 2008–2012 Václav Pech. All Rights Reserved.