Skip to content

Commit

Permalink
Replaced PrimitiveLongLongMap with eclipse collections
Browse files Browse the repository at this point in the history
  • Loading branch information
Andrei Koval committed May 8, 2018
1 parent 9e3c00a commit e3c0c5c
Show file tree
Hide file tree
Showing 10 changed files with 69 additions and 544 deletions.
Expand Up @@ -19,11 +19,10 @@
*/ */
package org.neo4j.kernel.impl.locking; package org.neo4j.kernel.impl.locking;


import org.eclipse.collections.api.map.primitive.MutableLongLongMap;
import org.junit.Test; import org.junit.Test;


import org.neo4j.collection.primitive.Primitive; import org.neo4j.collection.primitive.Primitive;
import org.neo4j.collection.primitive.PrimitiveLongLongMap;
import org.neo4j.memory.GlobalMemoryTracker;


import static org.hamcrest.Matchers.is; import static org.hamcrest.Matchers.is;
import static org.junit.Assert.assertThat; import static org.junit.Assert.assertThat;
Expand All @@ -41,34 +40,33 @@ public class ResourceTypesIT
public void indexEntryHashing() public void indexEntryHashing()
{ {
int collisions = 0; int collisions = 0;
try ( PrimitiveLongLongMap map = Primitive.offHeapLongLongMap( 35_000_000, GlobalMemoryTracker.INSTANCE ) ) int labelIdCount = 50;
{ int propertyKeyIdCount = 50;

int objectCount = 10000;
int labelIdCount = 50; MutableLongLongMap map = Primitive.longLongMap( 50 * 50 * 10000 );
int propertyKeyIdCount = 50; String[] values = precomputeValues( objectCount );
int objectCount = 10000;
String[] values = precomputeValues( objectCount );


for ( int labelId = 0; labelId < labelIdCount; labelId++ ) for ( int labelId = 0; labelId < labelIdCount; labelId++ )
{
for ( int propertyKeyId = 0; propertyKeyId < propertyKeyIdCount; propertyKeyId++ )
{ {
for ( int propertyKeyId = 0; propertyKeyId < propertyKeyIdCount; propertyKeyId++ ) for ( int objectId = 0; objectId < objectCount; objectId++ )
{ {
for ( int objectId = 0; objectId < objectCount; objectId++ ) String object = values[objectId];
{ long resourceId = indexEntryResourceId( labelId, exact( propertyKeyId, object ) );
String object = values[objectId];
long resourceId = indexEntryResourceId( labelId, exact( propertyKeyId, object ) );


long newValue = packValue( labelId, propertyKeyId, objectId ); long newValue = packValue( labelId, propertyKeyId, objectId );
long oldValue = map.put( resourceId, newValue ); final boolean hasOldValue = map.containsKey( resourceId );
if ( oldValue != -1 ) final long oldValue = map.get( resourceId );
map.put( resourceId, newValue );
if ( hasOldValue )
{
System.out.printf( "Collision on %s: %s ~= %s%n", resourceId, toValueString( newValue ),
toValueString( oldValue ) );
collisions++;
if ( collisions > 100 )
{ {
System.out.printf( "Collision on %s: %s ~= %s%n", resourceId, toValueString( newValue ), fail( "This hashing is terrible!" );
toValueString( oldValue ) );
collisions++;
if ( collisions > 100 )
{
fail( "This hashing is terrible!" );
}
} }
} }
} }
Expand Down
14 changes: 3 additions & 11 deletions community/kernel/src/test/java/org/neo4j/test/FakeCpuClock.java
Expand Up @@ -19,15 +19,14 @@
*/ */
package org.neo4j.test; package org.neo4j.test;


import org.eclipse.collections.api.map.primitive.MutableLongLongMap;
import org.junit.rules.TestRule; import org.junit.rules.TestRule;
import org.junit.runner.Description; import org.junit.runner.Description;
import org.junit.runners.model.Statement; import org.junit.runners.model.Statement;


import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeUnit;


import org.neo4j.collection.primitive.Primitive; import org.neo4j.collection.primitive.Primitive;
import org.neo4j.collection.primitive.PrimitiveLongLongMap;
import org.neo4j.memory.GlobalMemoryTracker;
import org.neo4j.resources.CpuClock; import org.neo4j.resources.CpuClock;


public class FakeCpuClock extends CpuClock implements TestRule public class FakeCpuClock extends CpuClock implements TestRule
Expand All @@ -40,7 +39,7 @@ public long cpuTimeNanos( long threadId )
return -1; return -1;
} }
}; };
private final PrimitiveLongLongMap cpuTimes = Primitive.offHeapLongLongMap( GlobalMemoryTracker.INSTANCE ); private final MutableLongLongMap cpuTimes = Primitive.longLongMap();


@Override @Override
public long cpuTimeNanos( long threadId ) public long cpuTimeNanos( long threadId )
Expand Down Expand Up @@ -72,14 +71,7 @@ public Statement apply( Statement base, Description description )
@Override @Override
public void evaluate() throws Throwable public void evaluate() throws Throwable
{ {
try base.evaluate();
{
base.evaluate();
}
finally
{
cpuTimes.close();
}
} }
}; };
} }
Expand Down
Expand Up @@ -19,20 +19,19 @@
*/ */
package org.neo4j.test; package org.neo4j.test;


import org.eclipse.collections.api.map.primitive.MutableLongLongMap;
import org.junit.rules.TestRule; import org.junit.rules.TestRule;
import org.junit.runner.Description; import org.junit.runner.Description;
import org.junit.runners.model.Statement; import org.junit.runners.model.Statement;


import org.neo4j.collection.primitive.PrimitiveLongLongMap;
import org.neo4j.memory.GlobalMemoryTracker;
import org.neo4j.resources.HeapAllocation; import org.neo4j.resources.HeapAllocation;


import static java.lang.Thread.currentThread; import static java.lang.Thread.currentThread;
import static org.neo4j.collection.primitive.Primitive.offHeapLongLongMap; import static org.neo4j.collection.primitive.Primitive.longLongMap;


public class FakeHeapAllocation extends HeapAllocation implements TestRule public class FakeHeapAllocation extends HeapAllocation implements TestRule
{ {
private final PrimitiveLongLongMap allocation = offHeapLongLongMap( GlobalMemoryTracker.INSTANCE ); private final MutableLongLongMap allocation = longLongMap();


@Override @Override
public long allocatedBytes( long threadId ) public long allocatedBytes( long threadId )
Expand All @@ -59,14 +58,7 @@ public Statement apply( Statement base, Description description )
@Override @Override
public void evaluate() throws Throwable public void evaluate() throws Throwable
{ {
try base.evaluate();
{
base.evaluate();
}
finally
{
allocation.close();
}
} }
}; };
} }
Expand Down
Expand Up @@ -21,21 +21,20 @@


import org.eclipse.collections.api.iterator.IntIterator; import org.eclipse.collections.api.iterator.IntIterator;
import org.eclipse.collections.api.iterator.LongIterator; import org.eclipse.collections.api.iterator.LongIterator;
import org.eclipse.collections.api.map.primitive.MutableLongLongMap;
import org.eclipse.collections.impl.map.mutable.primitive.LongLongHashMap;


import org.neo4j.collection.primitive.hopscotch.IntKeyObjectValueTable; import org.neo4j.collection.primitive.hopscotch.IntKeyObjectValueTable;
import org.neo4j.collection.primitive.hopscotch.IntKeyTable; import org.neo4j.collection.primitive.hopscotch.IntKeyTable;
import org.neo4j.collection.primitive.hopscotch.IntKeyUnsafeTable; import org.neo4j.collection.primitive.hopscotch.IntKeyUnsafeTable;
import org.neo4j.collection.primitive.hopscotch.LongKeyIntValueTable; import org.neo4j.collection.primitive.hopscotch.LongKeyIntValueTable;
import org.neo4j.collection.primitive.hopscotch.LongKeyLongValueTable;
import org.neo4j.collection.primitive.hopscotch.LongKeyLongValueUnsafeTable;
import org.neo4j.collection.primitive.hopscotch.LongKeyObjectValueTable; import org.neo4j.collection.primitive.hopscotch.LongKeyObjectValueTable;
import org.neo4j.collection.primitive.hopscotch.LongKeyTable; import org.neo4j.collection.primitive.hopscotch.LongKeyTable;
import org.neo4j.collection.primitive.hopscotch.LongKeyUnsafeTable; import org.neo4j.collection.primitive.hopscotch.LongKeyUnsafeTable;
import org.neo4j.collection.primitive.hopscotch.PrimitiveIntHashSet; import org.neo4j.collection.primitive.hopscotch.PrimitiveIntHashSet;
import org.neo4j.collection.primitive.hopscotch.PrimitiveIntObjectHashMap; import org.neo4j.collection.primitive.hopscotch.PrimitiveIntObjectHashMap;
import org.neo4j.collection.primitive.hopscotch.PrimitiveLongHashSet; import org.neo4j.collection.primitive.hopscotch.PrimitiveLongHashSet;
import org.neo4j.collection.primitive.hopscotch.PrimitiveLongIntHashMap; import org.neo4j.collection.primitive.hopscotch.PrimitiveLongIntHashMap;
import org.neo4j.collection.primitive.hopscotch.PrimitiveLongLongHashMap;
import org.neo4j.collection.primitive.hopscotch.PrimitiveLongObjectHashMap; import org.neo4j.collection.primitive.hopscotch.PrimitiveLongObjectHashMap;
import org.neo4j.memory.GlobalMemoryTracker; import org.neo4j.memory.GlobalMemoryTracker;
import org.neo4j.memory.MemoryAllocationTracker; import org.neo4j.memory.MemoryAllocationTracker;
Expand Down Expand Up @@ -101,29 +100,14 @@ public static PrimitiveLongIntMap longIntMap( int initialCapacity )
return new PrimitiveLongIntHashMap( new LongKeyIntValueTable( initialCapacity ), NO_MONITOR ); return new PrimitiveLongIntHashMap( new LongKeyIntValueTable( initialCapacity ), NO_MONITOR );
} }


public static PrimitiveLongLongMap longLongMap() public static MutableLongLongMap longLongMap()
{ {
return longLongMap( DEFAULT_HEAP_CAPACITY ); return longLongMap( DEFAULT_HEAP_CAPACITY );
} }


public static PrimitiveLongLongMap longLongMap( int initialCapacity ) public static MutableLongLongMap longLongMap( int initialCapacity )
{ {
return new PrimitiveLongLongHashMap( new LongKeyLongValueTable( initialCapacity ), NO_MONITOR ); return new LongLongHashMap( initialCapacity );
}

public static PrimitiveLongLongMap offHeapLongLongMap()
{
return offHeapLongLongMap( GlobalMemoryTracker.INSTANCE );
}

public static PrimitiveLongLongMap offHeapLongLongMap( MemoryAllocationTracker allocationTracker )
{
return offHeapLongLongMap( DEFAULT_OFFHEAP_CAPACITY, allocationTracker );
}

public static PrimitiveLongLongMap offHeapLongLongMap( int initialCapacity, MemoryAllocationTracker allocationTracker )
{
return new PrimitiveLongLongHashMap( new LongKeyLongValueUnsafeTable( initialCapacity, allocationTracker ), NO_MONITOR );
} }


public static <VALUE> PrimitiveLongObjectMap<VALUE> longObjectMap() public static <VALUE> PrimitiveLongObjectMap<VALUE> longObjectMap()
Expand Down

This file was deleted.

0 comments on commit e3c0c5c

Please sign in to comment.